【发布时间】:2011-09-07 01:14:58
【问题描述】:
我最近刚刚开始研究使用 PHPUnit 进行单元测试,并且想知道是否可以为我的所有测试模拟整个数据库。我的模型类(封装以提供 ActiveRecord 实现的 Table Row 对象)植根于数据库,并且一些模型具有许多级别的其他模型类,因此模拟所有这些似乎在后端会很痛苦。
是否可以让 PHPUnit 使用 CSV 文件中的数据充当我的数据库并针对那里的数据运行我的测试,而无需接触我的 DAO?我已经阅读了 PHPUnit 中关于数据库测试的部分,但我不确定这是我想要的,因为我不想测试数据库或与数据库交互的代码,更重要的是我的模型类是与数据库非常相关,一直模拟事物会很痛苦。如果我可以给它一个 CSV 文件作为我的数据库,那么我可以将我的数据放入 CSV 文件并照常进行。
不确定我是否在说清楚,所以请要求澄清。如果有可能实现这一点,那就太棒了。如果没有这个单元测试,这个野兽可能不实用,但我真的想在项目中引入单元测试。
谢谢
齐亚德
【问题讨论】:
-
我发现在测试使用 DAO 的类时最好模拟 DAO 本身。只要您可以手动构建模型实例以从模拟 DAO 查询方法返回,就可以了。
标签: unit-testing mocking phpunit