【发布时间】:2011-04-01 20:30:04
【问题描述】:
当我开始我的 Rails 应用程序时,我选择了 RSpec 作为我的测试框架,因为所有的炒作。现在,我正在尝试编写更多测试,但我发现我不喜欢这样编写测试。我想切换回默认的测试框架。
我怎么能做这个开关?我正在使用 Rails 3.0.5
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 testing
当我开始我的 Rails 应用程序时,我选择了 RSpec 作为我的测试框架,因为所有的炒作。现在,我正在尝试编写更多测试,但我发现我不喜欢这样编写测试。我想切换回默认的测试框架。
我怎么能做这个开关?我正在使用 Rails 3.0.5
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 testing
不知道你是否知道,但如果你使用断言而不是 rspec-expectations (obj.should matcher),你已经可以在没有任何额外配置的情况下这样做,那么唯一的区别是:
# w/ Test::Unit
class FooControllerTest < ActionController::TestCase
test "something or other" do
...
end
end
# w/ RSpec
describe FooController do
it "does something or other" do
...
end
end
您可以在 Rails 中使用 Test::Unit 编写的所有其他内容,都可以使用 RSpec 以完全相同的方式编写。
然后您将获得 RSpec 的所有非语法相关优势,例如可读输出、具有自己的 -help 输出的强大命令行工具等。
我知道这并不能回答您提出的问题,但我希望它对您的决策过程有所帮助。
【讨论】:
这不是非此即彼的情况。您可以在同一个 Rails 应用程序中进行 RSpec 和 Test::Unit 测试,因此只需开始编写 Test::Unit 测试。无需切换,只需使用 Test::Unit 进行新开发即可。
根据您运行测试的方式、CI 设置以及修改应用程序的方式,这可能会或多或少地发生变化,但在实践中这些都是直截了当的。
【讨论】:
在 config/application.rb 中
module AppName
class Application < Rails::Application
generate.test_framework :test_unit, :fixture => false # :rspec <- before
...
新模型/控制器生成基本的 test/* 文件
【讨论】: