San*_*box 14 unit-testing moq mocking
我已经开始使用moq进行模拟.有人能解释我严格和非严格嘲笑的概念吗?它们如何在moq中使用?
编辑: 我们在哪种情况下使用哪种类型的模拟?
Mar*_*off 13
我不确定moq具体,但这里是严格的模拟在Rhino中工作的方式.我声明我希望foo.Bar对我的对象进行调用foo:
foo.Expect(f => f.Bar()).Returns(5);
Run Code Online (Sandbox Code Playgroud)
如果调用代码
foo.Bar();
Run Code Online (Sandbox Code Playgroud)
那我很好,因为期望得到了完全满足.
但是,如果调用代码是:
foo.Quux(12);
foo.Bar();
Run Code Online (Sandbox Code Playgroud)
然后我的期望失败了,因为我没有明确期望打电话foo.Quux.
总而言之,如果有任何不同于预期的情况,严格的模拟将立即失败.在另一方面,非严格模拟(或存根)会很高兴地"忽略"的号召,foo.Quux并应返回一个default(T)返回类型T的foo.Quux.
Rhino的创建者建议您避免使用严格的模拟(并且更喜欢存根),因为您通常不希望在接收到如上所述的意外调用时测试失败.当您必须修复依赖于确切原始行为的数十个测试时,它会使您的代码重构变得更加困难.
| 归档时间: |
|
| 查看次数: |
13416 次 |
| 最近记录: |