|
|
1
8
你可以做一个
例如(C#):
|
|
|
2
4
诀窍是创建时间提供者的模拟。
Time.expected(:now).returns(now).once 等
作为:
显然,时钟可以通过其他方式注入,但现在我们有了一种可测试和可扩展的方法。 |
|
|
3
2
我经常这样测试重试尝试。我使用的方法是使超时可配置-然后我可以在测试中将其设置为零。在您的例子中,您可以模拟调用对象DoSomething(),期望对其进行3次调用,并将超时设置为0秒-然后您可以验证DoSomething()是否立即被调用3次。
|
|
4
2
|
|
|
5
1
你的直觉是正确的。诀窍是将问题的不同部分分开,而不是将它们捆绑到一个类中。您需要一个实现与时间无关的DoSomething的Action对象;一个Retryer对象,用于管理调用Action对象的尝试;还有一个等待的时钟。您可以直接对Action对象进行单元测试,使用stubbed Clock和Action对象对Retryer进行单元测试,并使时钟简单到可以正常工作。 最重要的是,不要把真正的睡眠放在测试中,它只是太脆弱和缓慢。 |
|
|
Ricky Mo · 角度测试如何模拟导入的const 2 年前 |
|
|
Robert · 如何模拟Perl的unlink函数? 2 年前 |
|
|
Ivan · 模拟没有按预期工作(Django) 2 年前 |
|
|
Erfan Sabouri · 在laravel中测试多存储 2 年前 |