每天一剂Rails良药之javascript_test

今天来看看javascript_test这个Rails plugin,它是对script.aculo.us库的单元测试框架的Rails风格测试封装
下载安装后,我们可以使用 ruby script/generate javascript_test foo来对public/javascripts/foo.js生成测试用的html文件
在测试用的html文件里我们可以写对JavaScript的测试,语法见 http://wiki.script.aculo.us/scriptaculous/show/UnitTesting,如:
testExample: function() { with(this) {
  var myElement = $('mydiv');
  assertEqual("DIV", myElement.tagName);
  assertEqual("DIV", myElement.tagName, "Hmm, not a DIV?");
}};

然后我们可以使用 rake test:javascripts来自动运行所有JavaScript单元测试

我们通过javascript_test这个插件来看看怎样写generators
该插件的generator文件为javascript_test/generators/javascript_test/javascript_test_generator.rb
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

我们要继承Rails::Generator::NamedBase基类,#{name}即可在字符串中得到运行script/generate javascript_test时的参数

以及怎样写rake
该插件的rake文件为javascript_test/tasks/javascript_test.rake
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

你可能感兴趣的:(JavaScript,单元测试,IE,Ruby,Rails)