Rails 2.3.9测试框架 - rspec1,黄瓜或rails内置测试框架

时间:2011-06-23 22:32:26

标签: ruby-on-rails unit-testing rspec cucumber

我们现在有一个相当大的rails(2.3.9)应用程序,带有0个rails测试用例。 (什么???)。是。有可能:)。

接下来,如果我们想在一个框架上进行测试,我们应该选择哪个框架,黄瓜,rspec1或者在测试框架中构建的rails?我只说一个框架的原因是因为学习和管理多个框架的复杂性是出于同样的目的。

  

Q1:y2009的部分内容   questions建议使用rspec   用于单元测试   模型/控制器和黄瓜   测试视图。那是(截至6月23日   2011)仍然是一个有效的推荐?

     第二季度:有没有人设法建立所有   他们需要的单个测试用例   框架(比如Cucumber)?, if   是的,哪一个?

2 个答案:

答案 0 :(得分:2)

Q1:这取决于你的开发者。基本上你可以用所有框架测试几乎相同的东西。我个人会选择rspec1。您将找到许多用于rspec的资源,尤其是rails 2.3.x.从长远来看,我会尝试将项目迁移到rails 3.等待的时间越长,它就越痛苦。

Q2:不,AFAIK黄瓜用于整合测试。您可以使用rspec或testunit,但之后您将缺乏集成测试。如果仅进行集成测试,则缺少单元测试,但需要进行单元(或行为)测试。此外,你应该花一些时间在模拟框架中,因为它们可以节省你很多时间。

答案 1 :(得分:1)

这有点偏好,但我会选择rspec或Test :: Unit。 RSpec最近被批评为过度设计,但我真的很喜欢:

  • 匹配器语法(value.should == 1assert_equal(value, 1)
  • 测试名称不限于方法名称(it "does something awesome" { ... } vs def test_it_does_something_awesome; ...; end

你可以通过TestUnit和一些支持库轻松实现这两个目标......但我更喜欢使用RSpec。

当您编写代码和测试时,通常(总是?)最好从外部开始:IE,编写集成测试(登录用户单击按钮将$ 5.00项添加到购物车,然后签出,以及他的信用卡应收取5.00美元的费用。因此,不是测试特定的类行为(与单元测试一样),而是要在数据库中创建对象,并以与用户Web浏览器类似的方式进行与站点交互的get / post /等调用。会让你的测试穿透整个堆栈。

最近我喜欢在RSpec内部使用Steak进行集成测试(使用Capybara来促进网络互动)

一旦建立了外围,我建议你开始关注单元测试。

单元测试可以很好地记录课程的行为。我将它们分组为方法,并描述可以传递给方法的内容,以及我希望返回的内容。

describe Object do
  describe "#method" do
    it "returns 4 when passed 2" do
      ...
    end
   end
end