【发布时间】:2020-06-19 11:32:18
【问题描述】:
我正在为一个运行主要函数的方法编写单元测试,然后异步记录有关请求的详细信息。
def someMethod(data: Object): SomeType =
for {
result <- someOtherMethod(data).withLogging(logMethod)
}
logMethod 方法是一个异步任务。在我的测试中,我想确保记录器正在接收消息,但是,线程完成得太快有时会导致测试不稳定并有时会导致 Unsatisfied 结果。
示例测试用例:
it("logs an error if an upload was attempted with some failure case") {
val uploadData = someData
mockSomeCall()
mockAnotherCall()
testController.methodWeAreTesting(uploadData).shouldBeRight()
Thread.sleep(75)
(stubLogger
.warn(_: RichMsg, _: Throwable, _: AnyId)(_: () => SourceLocation))
.verify(where { (msg: RichMsg, _, _, _) =>
msg.toString.equals(s"Some specific message")
})
}
我不喜欢每次需要确保记录器接收到特定消息时都添加Thread.sleep。我希望能够包装stubLogger 的期望。
如果需要更多信息,请告诉我。
【问题讨论】:
-
你用的是什么测试库?
标签: multithreading scala testing future