我经常看到人们在水豚和rspec中编写测试(规格)。 默认情况下,RSpec会生成所有类型的规范,实际上我只是禁用了这些规范:
config.generators do |g|
g.test_framework :rspec,
:view_specs => false,
:request_specs => false,
:routing_specs => false
end
end
我这样做是因为我想用Cucumber测试视图,对吗?也许我应该禁用一些其他规范以避免在两个框架中重复测试?
谢谢!
答案 0 :(得分:3)
你看到人们在Cucumber和RSpec中编写规范,因为它们是两个做同样事情的框架(行为驱动开发)。 Cucumber只提供一个业务可读的规范文档,该文档被转换为代码,而RSpec将业务规范混合到所描述的代码,它和上下文块中。
一般来说,如果您同时使用两者,您可能只是将RSpec用于UNIT测试功能(模型,控制器,视图和路由规范,尽管有一个强有力的论据,您只需要做模型规范) 。然后你将在黄瓜或RSpec的Request Specs中进行验收测试,没有理由同时使用它们。
我的一般经验法则是使用RSpec,如果只有技术人员使用规格,因为我发现它更容易使用,如果您的产品所有者亲自动手想要查看规格,则使用Cucumber。
请求规范和黄瓜功能都是集成测试的一种形式,这意味着您将使用应用程序的所有方面,而不仅仅是单独使用一个部分。它通常认为你可以推卸出测试控制器,路由和视图到集成测试的责任,所以如果你同意不需要它们,你可以在RSpec中禁用它们是正确的。
我自己仍然喜欢编写奇怪的控制器测试,通常是为了确保如果我发布额外的参数,应用程序将不会让用户自己成为管理员或类似的东西。