Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 编写功能测试时覆盖默认设置是否存在欺骗行为?_Ruby On Rails_Rspec_Functional Testing - Fatal编程技术网

Ruby on rails 编写功能测试时覆盖默认设置是否存在欺骗行为?

Ruby on rails 编写功能测试时覆盖默认设置是否存在欺骗行为?,ruby-on-rails,rspec,functional-testing,Ruby On Rails,Rspec,Functional Testing,我正在为rails应用程序编写一些测试,以确保我的索引操作正在对结果进行分页。我不想为测试创建25+个对象,默认每页项目数为25,因此我将测试中的默认每页项目数参数更改为一个更合理的参数,用于测试目的2 这是否违反了我没有想到的最佳实践规则?在我的脑海中,它就在聪明的黑客和可耻的胡言乱语的边缘。清楚地定义了测试目标 我认为作弊这个词有点误导,因为测试是为了你练习和维护代码。为了达到这个目的,任何能实现你的测试目标的东西都不是真的作弊。真正的问题是,你的实际目标是什么 练习行为,而不是实施 让我们

我正在为rails应用程序编写一些测试,以确保我的索引操作正在对结果进行分页。我不想为测试创建25+个对象,默认每页项目数为25,因此我将测试中的默认每页项目数参数更改为一个更合理的参数,用于测试目的2

这是否违反了我没有想到的最佳实践规则?在我的脑海中,它就在聪明的黑客和可耻的胡言乱语的边缘。

清楚地定义了测试目标 我认为作弊这个词有点误导,因为测试是为了你练习和维护代码。为了达到这个目的,任何能实现你的测试目标的东西都不是真的作弊。真正的问题是,你的实际目标是什么

练习行为,而不是实施 让我们假设您的测试目标是确保分页应该跨页面分割记录。也许你的测试表明:

it 'should successfully paginate records into 2 pages' do
  # test that pagination creates two pages
end
在这种情况下,通过减少夹具/工厂设置使测试更简单,从而澄清了测试。您没有测试第一页上是否有25条记录;您只是在测试分页是否将结果拆分为两个页面。您已经根据预期的行为构建了测试框架,并定义了一个非脆性测试,该测试提供了灵活性,以防将来以不同的方式分页

另一方面,如果您使用自己的定制分页代码,而不是使用广泛使用且经过战斗测试的分页gem,那么您肯定应该测试所有的边界条件,而不仅仅是一个每页25条记录的单一用例。一个测试当然不足以测试所有相关的排列,因此如果这是您的实际测试目标,您需要相应地扩展您的测试