![]() |
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进行单元测试,并使时钟简单到可以正常工作。 最重要的是,不要把真正的睡眠放在测试中,它只是太脆弱和缓慢。 |
![]() |
Anton Konikov · 转换为单一时区的日期[重复] 7 年前 |
![]() |
MrEmper · Java-自动生成当前日期+用户输入时间 7 年前 |
![]() |
R A · 尝试为我的HTML游戏创建最快时间的高分 7 年前 |
![]() |
Chintan7027 · MYSQL以数字时间格式计算日期差 7 年前 |
![]() |
user3725021 · 将字符数据帧列转换为分数时间 7 年前 |
![]() |
Ramesh S · 如何按时间禁用当前日期? 7 年前 |
|
Faisal Alzahrani · 用Java计算程序的Big-O 7 年前 |