【问题标题】:Proper usage of CRUD operations in unit tests在单元测试中正确使用 CRUD 操作
【发布时间】:2025-12-24 06:45:16
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    您会看到各种各样的答案,从使用夹具到工厂再到 PORO(“Plain Old Ruby Objects”),但我认为一般来说,您希望在单位工作时尽可能减少或消除数据库交互测试级别,而将更多内容留给集成或验收测试。

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

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

    你可能会觉得这很有趣:

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

    【讨论】:

    • 视频帮助很大。非常感谢!