在单元测试中正确使用CRUD操作

时间:2014-12-03 00:14:59

标签: ruby-on-rails unit-testing fixtures

我希望将不同数量的记录保存到数据库中以进行不同的测试。一个测试的目的是查看方法在数据库中只有一个记录的行为,而另一个测试的目的是查看该方法对10个记录的行为。我知道Fixtures是将数据加载到测试数据库的首选方式,但据我所知,Fixtures是静态的,无法针对特定测试进行模塑。因此,我在一些测试中使用CRUD操作。大多数这些测试首先删除正在测试的表中的所有记录,然后添加适合特定测试的记录。

依赖于CRUD操作并且不使用我在测试结束时放置的Fixture数据的测试,因此它们不会干扰使用Fixtures的测试。我是Rails测试的新手,想知道是否绕过Fixtures并在单元测试中使用CRUD操作是一种好/坏的做法?

1 个答案:

答案 0 :(得分:1)

你会看到各种各样的答案,从使用固定装置到工厂再到PORO(“普通老红宝石对象”),但我认为一般来说,你希望在单位工作时尽量减少或消除数据库交互测试级别,同时为集成或验收测试留下更多。

在进行单元测试时,考虑输入和输出,以及如何/从被测试的每个“单元”发送消息可能会有所帮助。

关于这个主题有很多书籍,文章和帖子,但最后我建议在实用性和理想世界观之间取得平衡。

您可能会觉得这很有趣:

https://www.youtube.com/watch?v=qPfQM4w4I04