0

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

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

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

谢谢!

4

1 回答 1

3

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

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

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

Request Specs 和 Cucumber Features 都是集成测试的一种形式,这意味着您将使用应用程序的所有方面,而不仅仅是孤立的一部分。人们普遍认为您可以将测试控制器、路由和视图的责任推到集成测试中,因此如果您同意不需要它们,您可以在 RSpec 中禁用它们是正确的。

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

于 2012-07-11T14:48:41.030 回答