今天来看看javascript_test这个Rails plugin,它是对script.aculo.us库的单元测试框架的Rails风格测试封装
下载安装后,我们可以使用[b]ruby script/generate javascript_test foo[/b]来对public/javascripts/foo.js生成测试用的html文件
在测试用的html文件里我们可以写对JavaScript的测试,语法见[url]http://wiki.script.aculo.us/scriptaculous/show/UnitTesting[/url],如:
[code]
testExample: function() { with(this) {
var myElement = $('mydiv');
assertEqual("DIV", myElement.tagName);
assertEqual("DIV", myElement.tagName, "Hmm, not a DIV?");
}};
[/code]
然后我们可以使用[b]rake test:javascripts[/b]来自动运行所有JavaScript单元测试
我们通过javascript_test这个插件来看看怎样写generators
该插件的generator文件为javascript_test/generators/javascript_test/javascript_test_generator.rb
[code]
class JavascriptTestGenerator < Rails::Generator::NamedBase
def manifest
record do |m|
m.directory File.join("test","javascript")
m.template 'javascript_test.html', File.join('test/javascript', "#{name}_test.html")
end
end
end
[/code]
我们要继承Rails::Generator::NamedBase基类,#{name}即可在字符串中得到运行script/generate javascript_test时的参数
以及怎样写rake
该插件的rake文件为javascript_test/tasks/javascript_test.rake
[code]
desc "Run tests for JavaScripts"
task 'test:javascripts' => :environment do
JavaScriptTest::Runner.new do |t|
t.mount("/", RAILS_ROOT)
t.mount("/test", RAILS_ROOT+'/test')
t.mount('/test/javascript/assets', RAILS_ROOT+'/vendor/plugins/javascript_test/assets')
Dir.glob('test/javascript/*_test.html').each do |js|
t.run(File.basename(js,'.html').gsub(/_test/,''))
end
t.browser(:safari)
t.browser(:firefox)
t.browser(:ie)
t.browser(:konqueror)
end
end
[/code]
下载安装后,我们可以使用[b]ruby script/generate javascript_test foo[/b]来对public/javascripts/foo.js生成测试用的html文件
在测试用的html文件里我们可以写对JavaScript的测试,语法见[url]http://wiki.script.aculo.us/scriptaculous/show/UnitTesting[/url],如:
[code]
testExample: function() { with(this) {
var myElement = $('mydiv');
assertEqual("DIV", myElement.tagName);
assertEqual("DIV", myElement.tagName, "Hmm, not a DIV?");
}};
[/code]
然后我们可以使用[b]rake test:javascripts[/b]来自动运行所有JavaScript单元测试
我们通过javascript_test这个插件来看看怎样写generators
该插件的generator文件为javascript_test/generators/javascript_test/javascript_test_generator.rb
[code]
class JavascriptTestGenerator < Rails::Generator::NamedBase
def manifest
record do |m|
m.directory File.join("test","javascript")
m.template 'javascript_test.html', File.join('test/javascript', "#{name}_test.html")
end
end
end
[/code]
我们要继承Rails::Generator::NamedBase基类,#{name}即可在字符串中得到运行script/generate javascript_test时的参数
以及怎样写rake
该插件的rake文件为javascript_test/tasks/javascript_test.rake
[code]
desc "Run tests for JavaScripts"
task 'test:javascripts' => :environment do
JavaScriptTest::Runner.new do |t|
t.mount("/", RAILS_ROOT)
t.mount("/test", RAILS_ROOT+'/test')
t.mount('/test/javascript/assets', RAILS_ROOT+'/vendor/plugins/javascript_test/assets')
Dir.glob('test/javascript/*_test.html').each do |js|
t.run(File.basename(js,'.html').gsub(/_test/,''))
end
t.browser(:safari)
t.browser(:firefox)
t.browser(:ie)
t.browser(:konqueror)
end
end
[/code]