1

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

这是否违反了我没有想到的任何最佳实践规则?在我的脑海中,它恰好位于聪明的黑客和可耻的组合线上。

4

1 回答 1

3

明确定义测试目标

我认为“作弊”这个词有点误导,因为测试是为了在练习和维护代码方面的好处。为此,任何能够实现您的测试目标的东西都不是真正的作弊。真正的问题是,你的实际目标是什么?

锻炼行为,而不是实施

假设您的测试目标是确保分页应该跨页面拆分记录。也许你的测试说:

it 'should successfully paginate records into 2 pages' do
  # test that pagination creates two pages
end

在这种情况下,通过减少夹具/工厂设置使测试变得更简单可以澄清测试。您不是在测试第一页是否有 25 条记录;您只是在测试分页将结果分成两页。您已经根据预期行为构建了测试框架,并定义了一个非脆弱测试,以防万一您将来以不同方式分页时提供灵活性。

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

于 2012-07-28T22:21:42.397 回答