我一定是做错了什么。
我正在实现我的存储库,然后使用模拟数据对其进行测试。一切顺利。
现在我想测试我的域对象,所以我将它们指向模拟存储库。
但我发现我必须将“真实”存储库中的逻辑重新实现到模拟中,或者创建封装逻辑并与存储库(真实或模拟)交互的“辅助类”,然后我也必须测试那些。
那么我错过了什么 - 为什么在我可以使用带有模拟数据的真实存储库时实现和测试模拟存储库?
编辑:为了澄清,通过“模拟数据”我没有访问实际的数据库。我有一个“数据库模拟层”,我可以在返回已知数据的真实存储库下插入。
最佳答案
也许你混合了你的抽象。也许您谈论的一些助手和逻辑应该在您的域对象中。您的存储库应该实现 CRUD 接口(interface)。所以你的域逻辑应该使用存储库中的 8 个操作。 Good retrieve 和 Bad retrieve(抛出异常)只是八个中的两个。一项测试是如何在域对象中处理 Bad 检索。其余测试应该测试良好的检索。
关于unit-testing - 模拟存储库与带有模拟数据的真实存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2866449/