ruby-on-rails - 在 Ruby on Rails 中,您测试 Controller 和 View 还是大多数模型?

标签 ruby-on-rails unit-testing

我听说,至少,如果您只为模型编写单元测试并尝试将大部分逻辑保留在模型中,那么您的情况就相当不错了。测试 Controller 和 View 或框架的任何其他部分有什么优点吗?

最佳答案

我认为正确的答案是 - 这取决于:-)

如果您的 Controller 真的很笨并且由“一个衬垫”组成,则无需对其进行测试,因为没有任何(或几乎没有)可以损坏。从你所说的情况来看,这是你的情况。请记住,您应该单独测试 Controller ,以便模拟您的模型,并且这需要一些时间/代码。

测试 View 要棘手得多,因为您应该单独测试该层 - 因此您必须模拟所有模型/ Controller - 这是单元测试的原则。

所以我只会投票支持单元测试模型。您几乎拥有所有逻辑,因此您的测试代码覆盖率很高。为模型编写 RSpec 非常简单。

但是 - 除了单元测试之外,您确实应该进行集成测试。 cucumber 对此非常有用。在集成测试中,您可以同时测试所有层,而不是孤立地测试。而且 Cucumber 测试可以与您的客户讨论,因为它们是人类可读的。这确实是澄清的重要来源 - 当您编写集成测试时,您经常会发现未指定的边缘情况(又名“如果用户点击那里,应用程序应该做什么?”)。

所以我的谦虚建议很简单:

RSpec 用于模型单元测试,Cucumber 用于集成测试

关于ruby-on-rails - 在 Ruby on Rails 中,您测试 Controller 和 View 还是大多数模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3797001/

相关文章:

ruby-on-rails - 无法检测 rake 任务 - Errno::ENOENT: 没有这样的文件或目录 - R

android - Koin: NoBeanDefFoundException, 检查你的模块定义

vb.net - 单元测试和 VB.NET

unit-testing - 如何在 VS Code 中调试 dotnet 测试?

ruby-on-rails - 如何在模型中调试?

mysql - 如何将 sql 时间戳值插入到 Rails 中的日期时间类型?

ruby-on-rails - Rails 使用 jbuilder 显示错误的正确方法

mysql - 在 Rails 项目中映射旧数据库列

unit-testing - beego app如何编写测试用例?

javascript - Jest 模拟 window.sessionStorage 的最佳方法是什么