【发布时间】:2011-03-10 19:37:23
【问题描述】:
我最近阅读了很多关于 RSpec、Shouda、Cucumber、Test::Unit、FactoryGirl、Fixtures 等的内容。但我仍然对它们各自用于哪种测试感到困惑。 Model、Controller、View、Helper的测试种类。
我不知道从哪里开始。有人可以帮我“订购”我应该开始的方式吗?例如,我应该学习 Test::Unit,然后是 RSpec,然后是 Cucumber?
【问题讨论】:
我最近阅读了很多关于 RSpec、Shouda、Cucumber、Test::Unit、FactoryGirl、Fixtures 等的内容。但我仍然对它们各自用于哪种测试感到困惑。 Model、Controller、View、Helper的测试种类。
我不知道从哪里开始。有人可以帮我“订购”我应该开始的方式吗?例如,我应该学习 Test::Unit,然后是 RSpec,然后是 Cucumber?
【问题讨论】:
我建议您阅读 Roy Osherove 的 'The Art of Unit Testing'。我强烈建议您阅读第 1 部分和第 4 部分。
虽然专注于单元测试 (duh),但仍有一些解释清楚的概念真正帮助我更好地理解测试世界。这不是一本复杂/无聊的书,即使没有任何以前的测试知识,我也很喜欢阅读它。希望你也喜欢。
Rgds
【讨论】:
我也有同样的问题 :) Rspec 用于单元测试。这意味着您测试您的模型、控制器甚至视图,以查看它们是否按照您的预期执行操作。
请注意,测试并不强制执行行为,它们只是测试它。看看这个例子:
describe "A new User" do
let(:user) { Factory(:user) }
it "is not valid if first_class is not either [Magician, Fighter, Ranger]" do
user.first_class = 'warrior'
user.should_not be_valid
end
end
这是一个使用工厂的模型规范(更多信息请查看工厂女孩),并定义如果 first_class 不是上述 3 个之一并且类似于“战士”,则测试应该失败。创建此测试后,将验证添加到模型中:
validates :first_class, :presence => true, :inclusion => %w(Fighter Ranger Magician)
现在测试通过了:)
检查 rspec 后,您应该看看 Cucumber,它实际上是一个场景测试 gem。在那里,您可以指定与正则表达式匹配的整个场景。查看 railscasts.com 上非常漂亮的 railscast,了解黄瓜的精彩介绍。
希望能给你一些见解:)
【讨论】: