考虑一个处理依赖注入的初学者。我们正在分析 NerdDinner 中的两个相关类。
来自应用程序的 DinnerRepository :
来自测试的FakeDinnerRepository:
它们实现了不同的逻辑,这当然是必要的,因为这里的关键思想是实现IDinnerRepository
,并提供不同的实现和私有成员。
我知道测试是针对控制器的,但我担心数据访问逻辑有两种不同的实现。考虑使用任何类型的 ORM、ADO.NET、SubSonic 或您喜欢的任何类型的数据访问的任何项目。是的,您可以设置您的假存储库以匹配真实存储库。
我担心的是,随着时间的推移,真实仓库中的实现细节会发生变化。可能是输入错误,或者查询中的其他一些重要的实现细节发生了变化。这导致模型中的假货和真实回购之间的逻辑可能不匹配。令人担心的是,真正的 repo 和测试 repo 的实现不同步。
问题:
- 在这种情况下,您将如何测试模型?
- 是否适合测试模型?
- 确保您的测试跟上业务逻辑的实现是否是一个纪律问题?