|
|
1
53
你的测试试图达到什么目的?
你正在验证什么行为或状态?具体来说,您是否正在验证合作者(数据)是否拥有
如果你想设定一个期望,可以使用模拟和期望:
使用
如果你想存根一个方法,使用
(旁白:我知道你可以使用stup.AssertWasCalled()来实现与mock几乎相同的功能。期待并使用可以说更好的阅读语法,但我只是在深入探讨模拟和语法之间的区别;存根)。 Roy Osherove has a very nice explanation of mocks and stubs. 请发布更多代码!
我们需要一个关于如何创建存根(或模拟)以及如何将结果用于被测类的完整图片。做
正如Simon Laroche指出的那样,如果Manager实际上没有对ListCount的模拟/截断返回值做任何事情,那么测试就不会因此而通过或失败。测试只会调用模拟/截断方法——仅此而已。 为了更好地理解这个问题,考虑三条信息,你很快就会明白:
比较: 基于交互的模拟测试 .模拟电话 是 测试。
使用存根进行基于状态的测试 存根驱动测试,但不是预期的一部分。
我个人倾向于在所有可能的情况下进行基于状态的测试,尽管对于使用以下方式设计的API,通常需要进行基于交互的测试 Tell, Don't Ask 记住,因为你不会有任何暴露的状态来验证! API混淆。嘲笑不是废话。还是他们? 犀牛模型中的模型和存根之间的区别很模糊。传统上,存根并不意味着有期望——所以如果你的测试double没有调用它的方法,这不会直接导致测试失败。 …然而,Rhino Mocks API功能强大,但令人困惑,因为它允许您在存根上设置期望值,对我来说,这违反了公认的术语。我也不太喜欢这个术语。在我看来,最好消除这种区别,让测试方法加倍设置角色。 |
|
|
2
1
我认为这与你的经理有关。ListCount()正在处理返回值。 如果它不使用它,那么你的DAL可以返回任何不重要的东西。
如果你的列表计数正在用值做某事,那么你应该对它正在做什么进行断言。例如
|
|
|
3
0
你试过用吗
|
|
|
Ricky Mo · 角度测试如何模拟导入的const 1 年前 |
|
|
Robert · 如何模拟Perl的unlink函数? 1 年前 |
|
|
Ivan · 模拟没有按预期工作(Django) 2 年前 |
|
|
Erfan Sabouri · 在laravel中测试多存储 2 年前 |