我正在为rails应用程序编写一些测试,以确保我的索引操作对结果进行分页。我不想为测试创建25个以上的对象(每页默认项目为25个),因此我将测试中的default_per_page参数更改为更合理(出于测试目的)2。
这是否违反了我没想到的任何最佳实践规则?它位于我脑海中巧妙的黑客和可耻的kludge线上。
答案 0 :(得分:3)
我认为“作弊”这个词有点误导,因为测试是为了你的在锻炼和维护代码方面的好处。为此,任何完成测试目标的事情都不是真的在作弊。真正的问题是,你的实际目标是什么?
假设您的测试目标是确保分页应跨页面拆分记录。也许你的测试说:
it 'should successfully paginate records into 2 pages' do
# test that pagination creates two pages
end
在这种情况下,通过减少夹具/工厂设置来简化测试可以明确测试。您没有测试第一页上有25条记录;你只是测试分页将结果分成两页。您已根据预期行为制定了测试框架,并定义了一项非脆弱测试,以便在您将来进行不同的分页时提供灵活性。
另一方面,如果你推出自己的自定义分页代码而不是使用广泛使用且经过实战考验的分页宝石,那么你当然应该测试所有的边界条件,而不是只是每页25个记录的单个用例。单个测试当然不足以测试所有相关的排列,所以如果这是您的实际测试目标,则需要相应地扩展测试。