提问人:k-block 提问时间:1/23/2023 最后编辑:schneidak-block 更新时间:1/27/2023 访问量:41
Junit,如何使用 Junit 覆盖回调代码?
Junit, How to cover the callback code using Junit?
问:
我必须编写一个测试用例来涵盖一个将回调作为参数之一的方法。它看起来像下面的代码片段。
JAXBElement<MyCustomObject> obj = null;
try {
obj = (JAXBElement<MyCustomObject>) template.marshall("some string", new SoapActionCallback("some string") {
public void doWithMessage(MyMessageClass message) {
// some logic
});
}
如何覆盖回调逻辑?
我无法弄清楚如何覆盖回调逻辑。
答:
0赞
schneida
1/23/2023
#1
我不确定这是否是最好的模式,但我经常做的是使用 CompletableFuture
来处理这些类型的回调。
@Test
public void testMethod() throws Exception {
JAXBElement<MyCustomObject> obj = null;
//Instantiate a future before the callback
final CompletableFuture<MyMessageClass> callbackFuture = new CompletableFuture<>();
try {
obj = (JAXBElement<MyCustomObject>) template.marshall("some string", new SoapActionCallback("some string") {
public void doWithMessage(MyMessageClass message) {
//Complete the future within the callback
callbackFuture.complete(message);
});
}
//Wait until the future has completed in your callback and do the verification afterwards
MyMessageClass message = callbackFuture.get(5, TimeUnit.SECONDS);
assertEquals("your verification", message.toString());
}
上一个:在 MSAL 中观察登录用户?
下一个:模板类的非静态成员函数使用无效
评论