我有一个应用程序需要相当多的数据(1000条记录)来进行适当的测试.我发现获得一组可测试的,合理的数据的唯一方法是使用我的生产数据库的一个子集.我已将其转换为正常`test/fixtures'位置的YAML灯具.
这有效,但现在我有一堆看似脆弱的测试和断言,这取决于它们是满足条件X的特定数量的记录...
例
def test_children_association p = Parent.find(1) assert_equal 18, p.children.count, "Parent.children isn't providing the right records" end
这对我来说似乎不是一个好主意,但我不确定是否有更好/可接受的方法来测试需要大量数据层次结构的应用程序.
测试中的幻数不是反模式.您的测试需要非常简单,以至于您无需测试它们.这意味着你将拥有一些神奇的数字.这意味着当您更改少量功能时,您的测试将会中断.这很好.
夹具有一些问题,但是你可以做一些简单的事情来使它们更容易使用:
只有您的灯具中的基线数据,大多数测试需要但不关心的数据类型.这将涉及预先投入时间,但最好早点承担痛苦,而不是在项目的生命周期中编写糟糕的单元测试.
在测试环境中添加要测试的数据.这提高了测试的可读性,并使您免于在单元测试开始时编写"确保没有人搞砸了灯具"的健全性检查.