/*magicgod java保留地*/

« Previous day (八月 30, 2007) | Main | Next day (九月 1, 2007) »

http://blog.matrix.org.cn/magicgod/date/20070831 星期五 2007年08月31日

rjs的使用

参见:ajax on rails第5章。下载:http://www.gaimcn.com/bbs/attachment.php?aid=20

事先创建好view, controller

1.在view里创建一个远程链接,link_to_remote "go", :url=>{:action=>"go_with_rjs"} , 如果是form_remote_tag也可以。

2.在controller里创建一个action

def go_with_rjs
  @msg="let's go"
end

3.在目录 app/views/<controller名字> 下建一个 go_with_rjs.rjs ,名字与action相同。
内容:
page.alert("#{msg}")

这样点击那个链接就出一个alert信息。

具体page的用法参见Module
ActionView::Helpers::PrototypeHelper::JavaScriptGenerator::GeneratorMethods

也可以看ajax on rails,里面更详细,另外有多种效果可以使用。

rjs给了一种选择,让你在ajax的时代也可以重回ruby,如果你不喜欢js的话。

rails的缺省三层测试

rails缺省的测试建议就是三层:
1. Unit Test 单元测试,用于测试各种域对象,也可以测试一些工具类。
2. Functional Test 功能测试,其实是对于controller测试,有点象web层面的单元测试。
3. Integration Test 集成测试,这个最贴近业务需求,往往是将几个页面串起来,以一个业务动作为基本单位。

这些测试都是写代码来测试,似乎并没有录制工具来生成,不过因为ruby的代码实在是非常简洁,写起来应该不算费力的。最难的web测试已经分解为一些预置的mock类,很容易写代码来测试。

测试是需要环境支持的,rails 缺省使用Test数据库环境,大多数应用所指的环境就是数据库环境,如果有特殊的环境要求还可以在setup里配置。

测试数据是放在 Test Fixture里的,都是一些简单的yaml文件,由于支持erb,使得测试数据可以成为动态数据,比如当前时间的前一个小时、sha1加密的密码之类。这些动态数据的灵活性要超过SQL和dump文件。

当你开始测试应用的时候,需要的是:
1. 准备好Test数据库环境(基本上只要建一个库,另外用rake从开发数据库来生成一个schema.rb)。
2. 准备好测试数据 Test Fixture,填好内容,并且理顺他们之间的关系。
3. 写好三层测试代码。

最后,开始 rake test,一切就开始了。虽然没有红绿条,但是感觉比JUnit要踏实。


Valid HTML! Valid CSS!

This is a personal weblog, I do not speak for my employer.