Rspec黄瓜避免重复测试

时间:2012-07-11 10:42:37

标签: ruby-on-rails ruby ruby-on-rails-3 rspec cucumber

我经常看到人们在水豚和rspec中编写测试(规格)。 默认情况下,RSpec会生成所有类型的规范,实际上我只是禁用了这些规范:

config.generators do |g|
  g.test_framework :rspec,
    :view_specs    => false,
    :request_specs => false,
    :routing_specs => false
  end
end

我这样做是因为我想用Cucumber测试视图,对吗?也许我应该禁用一些其他规范以避免在两个框架中重复测试?

谢谢!

1 个答案:

答案 0 :(得分:3)

你看到人们在Cucumber和RSpec中编写规范,因为它们是两个做同样事情的框架(行为驱动开发)。 Cucumber只提供一个业务可读的规范文档,该文档被转换为代码,而RSpec将业务规范混合到所描述的代码,它和上下文块中。

一般来说,如果您同时使用两者,您可能只是将RSpec用于UNIT测试功能(模型,控制器,视图和路由规范,尽管有一个强有力的论据,您只需要做模型规范) 。然后你将在黄瓜或RSpec的Request Specs中进行验收测试,没有理由同时使用它们。

我的一般经验法则是使用RSpec,如果只有技术人员使用规格,因为我发现它更容易使用,如果您的产品所有者亲自动手想要查看规格,则使用Cucumber。

请求规范和黄瓜功能都是集成测试的一种形式,这意味着您将使用应用程序的所有方面,而不仅仅是单独使用一个部分。它通常认为你可以推卸出测试控制器,路由和视图到集成测试的责任,所以如果你同意不需要它们,你可以在RSpec中禁用它们是正确的。

我自己仍然喜欢编写奇怪的控制器测试,通常是为了确保如果我发布额外的参数,应用程序将不会让用户自己成为管理员或类似的东西。