gpt4 book ai didi

java - 如何为mockito设置模拟对象方法调用的回调?

转载 作者:行者123 更新时间:2023-12-01 09:25:16 26 4
gpt4 key购买 nike

我有方法并需要测试它:

void update() {
_cleaner.clear();
_updator.upadate();
}

调用的顺序对于这种情况很重要。我想写这样的测试:

void updateTest(){

Integer CLEAR = 0, UPDATE = 1;
Stack<Integer> callStack = new Stack<>();

Cleaner cleaner = mock(Cleaner.class);
Updator updator = mock(Updator.class);

when(cleaner.clear()).callback(() -> callStack.add(CLEAR));
when(updator.update()).callback(() -> callStack.add(UPDATE));

Some testingObj = new Some(cleaner, updator);
testingObj.update();

assertEquels(CLEAR, callStack.pop());
assertEquels(UPDATE, callStack.pop());
assertTrue(callStack.isEmpty());
}

_cleaner.clear() 和 _updator.upadate() 返回 void。很明显,

when(cleaner.clear()).callback(() -> callStack.add(ClearCall)); 
when(updator.update()).callback(() -> callStack.add(UpdateCall));

是无效代码。除了那些成功的台词我还能写什么呢?如何为mockito调用的方法(结果类型为void)设置回调?

最佳答案

我建议您使用 InOrder validator 来确认这些方法是按照您想要的顺序调用的。请参阅此处了解一些文档:http://site.mockito.org/mockito/docs/current/org/mockito/InOrder.html

此示例基于直接来自该文档的代码:

InOrder inOrder = inOrder(cleaner, updator);

inOrder.verify(cleaner).clear();
inOrder.verify(updator).update();

关于java - 如何为mockito设置模拟对象方法调用的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39883739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com