我已经用 rspec 和 capybara 完成了集成(又名“功能”)测试,但我正在构建一个复杂的功能,它结合了各种 ruby 类和 rails 模型,并且没有真正涉及 Controller 或 UI。
我想执行一系列涉及这些不同类和模型的测试,以确保它们都能按预期一起工作。
这看起来不像是单元测试,因为这些测试需要多个对象协同工作。
它也不像传统的 Rails“集成”测试,因为我没有在 UI 中导航或点击 Controller 。
那么这些是什么以及如何在我的 Rails 应用程序中构建和组织它们?
最佳答案
您不限于 Rails 的“开箱即用”文件夹集或测试类型。您可以添加其他文件夹,并根据需要基本上组织它们。如果您刚刚开始并且没有很多,我只是将它们放在 spec/objects
或 spec/poros
(普通旧 Ruby 对象)中并测试他们在那里。随着它们数量的增加,您可能希望将它们分解到文件夹中 - 只需确定一个有意义的约定并遵循它即可。一旦您超出了 Rails 给您的标准集,答案本身就没有正确或错误的答案 - 它只是“做有意义的事”。
至于它们是什么类型的测试,我仍然称它们为集成测试。虽然他们没有测试整个 Rails 堆栈的集成,但他们正在测试几个对象之间的集成。这是否意味着您将它们放在 spec/integration_tests
文件夹中取决于您 - 我个人不会。
关于ruby-on-rails - 如何在没有 Controller 的情况下进行集成测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32194237/