gpt4 book ai didi

ruby-on-rails - 通过集成测试实践 BDD——我是否也需要单元测试?

转载 作者:行者123 更新时间:2023-12-04 05:45:40 26 4
gpt4 key购买 nike

目前我的开发流程是这样的:

  1. 我将预期行为描述为使用 WebRat 的集成测试
  2. 我编写 Ruby on Rails 代码来提供该行为,因此通过了测试
  3. 我进行重构,确保测试在过程结束时仍然通过
  4. 我编写下一个集成测试

在我看来,根据定义,我的集成测试正在测试我可以创建的每个模型、 Controller 和 View 。实际上,我是否也没有编写单元测试而遗漏了什么?

最佳答案

我实际上非常赞同您的观点。我喜欢 Cucumber 并且我喜欢 RSpec —— 我同时使用它们,但并不总是在相同的代码上。例如,最近我很少为 Rails Controller 编写 RSpec 示例,而且我几乎从不编写 View 规范。我的大多数 Controller 都非常相似,并且与“标准” Controller 模式没有太大差异——这已经通过 Rails 自己的单元测试进行了很好的测试。再次验证相同的行为并不会因为它花费的时间和模拟所有模型的麻烦而获得太多。在集成级别使用 Cucumber,我可以跳过模拟并获得我正在寻找的基本验证。在大多数情况下, View 测试在 Cucumber 中的处理也更加透明。 (然后我应该看到“foo” 等等。)

但这并不是说我没有在 Rails 中广泛使用 RSpec。我将它用于我的逻辑所在的地方:模型、 Controller 过滤器和 View 助手。我还有几个项目几乎所有业务逻辑,例如针对复杂的第三方接口(interface)的库或 API 适配器。对于那些我通常发现自己只使用 RSpec 而跳过 Cucumber。

作为一种启发式方法,我建议您强烈在以下任何问题可以回答"is"时随时考虑编写单元测试:

  • 我正在编写的代码是否过于复杂?
  • 此代码的存在是否主要是为了回答其他代码?
  • 这是我正在重构的现有代码(尚未进行单元测试)吗?
  • 我在这段代码中发现了错误吗? (如果是这样,请在修复之前编写单元测试,以免它再次潜入。)
  • 我是否需要考虑十多秒钟才能以最优雅的方式实现此代码?
  • 我的 Spidey Sense 刺痛吗?

如果以上都不是真的,那么也许您只需进行集成测试即可。同样,在很多情况下这是合理的。但是,如果您以后确实遇到了问题,请做好付出代价的准备——这个代价应该包括在需要时随时编写单元测试。

关于ruby-on-rails - 通过集成测试实践 BDD——我是否也需要单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1563007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com