我用Moq来模拟我的存储库.但是,最近有人说他们更喜欢创建存储库接口的硬编码测试实现.
每种方法的优缺点是什么?
编辑:澄清了与Fowler链接的存储库的含义.
我通常会看到两个带存储库的场景.我要求的东西,我得到它,或者我要求的东西,它不存在.
如果您正在模拟您的存储库,那意味着您正在使用您的存储库来测试系统(SUT).因此,您通常希望在从存储库中获取对象时测试您的SUT是否正常运行.并且你还想测试它是否能够正确地处理这种情况,当你期望得到回报而不是,或者不确定你是否会得到回报.
如果您正在进行集成测试,硬编码测试双打是可以的.比如说,你想要保存一个对象,然后把它取回来.但这是测试两个对象在一起的交互,而不仅仅是SUT的行为.他们是两个不同的东西.如果您开始编写假存储库,那么您也需要对这些存储库进行单元测试,否则您最终会将代码的成功与失败基于未经测试的代码.
这是我对Mocking vs. Test Doubles的看法.
SCNR:
"你称自己为存储库?我看到火柴盒的容量更大!"