Ruby on rails 编写功能测试时覆盖默认设置是否存在欺骗行为?
我正在为rails应用程序编写一些测试,以确保我的索引操作正在对结果进行分页。我不想为测试创建25+个对象,默认每页项目数为25,因此我将测试中的默认每页项目数参数更改为一个更合理的参数,用于测试目的2 这是否违反了我没有想到的最佳实践规则?在我的脑海中,它就在聪明的黑客和可耻的胡言乱语的边缘。清楚地定义了测试目标 我认为作弊这个词有点误导,因为测试是为了你练习和维护代码。为了达到这个目的,任何能实现你的测试目标的东西都不是真的作弊。真正的问题是,你的实际目标是什么 练习行为,而不是实施 让我们假设您的测试目标是确保分页应该跨页面分割记录。也许你的测试表明:Ruby on rails 编写功能测试时覆盖默认设置是否存在欺骗行为?,ruby-on-rails,rspec,functional-testing,Ruby On Rails,Rspec,Functional Testing,我正在为rails应用程序编写一些测试,以确保我的索引操作正在对结果进行分页。我不想为测试创建25+个对象,默认每页项目数为25,因此我将测试中的默认每页项目数参数更改为一个更合理的参数,用于测试目的2 这是否违反了我没有想到的最佳实践规则?在我的脑海中,它就在聪明的黑客和可耻的胡言乱语的边缘。清楚地定义了测试目标 我认为作弊这个词有点误导,因为测试是为了你练习和维护代码。为了达到这个目的,任何能实现你的测试目标的东西都不是真的作弊。真正的问题是,你的实际目标是什么 练习行为,而不是实施 让我们
it 'should successfully paginate records into 2 pages' do
# test that pagination creates two pages
end
在这种情况下,通过减少夹具/工厂设置使测试更简单,从而澄清了测试。您没有测试第一页上是否有25条记录;您只是在测试分页是否将结果拆分为两个页面。您已经根据预期的行为构建了测试框架,并定义了一个非脆性测试,该测试提供了灵活性,以防将来以不同的方式分页
另一方面,如果您使用自己的定制分页代码,而不是使用广泛使用且经过战斗测试的分页gem,那么您肯定应该测试所有的边界条件,而不仅仅是一个每页25条记录的单一用例。一个测试当然不足以测试所有相关的排列,因此如果这是您的实际测试目标,您需要相应地扩展您的测试