我正在测试与套接字的交互 我已经嘲笑了套接字,并想测试ack中发生的事情,因为我需要调用ack。
我试着写下以下内容:
Answer<Void> answer = invocation -> {
Ack ack = invocation.getArgument(2);
ack.call(any(Object[].class));
return null;
};
doAnswer(answer).when(socket).emit(anyString(),any(Object[].class),any(Ack.class));
但是,在我的代码中,我的模拟套接字执行socket.emit("blahblah","bababa",Ack);
不会调用答案。
如何让它发挥作用?
答案 0 :(得分:1)
根据模拟期望,发出的第二个参数是Belongs To Relationships
...
Object[]
请参阅:doAnswer(answer).when(socket).emit(anyString(),any(Object[].class),any(Ack.class));
但是在你的帖子中你说:
我的模拟套接字执行socket.emit(&#34; blahblah&#34;,&#34; bababa&#34;,Ack);
因此,您为第二个参数传递一个字符串(any(Object[].class)
)。这与"bababa"
预期不符。
如果你将模拟期望改为......
Object[]
...然后调用应该匹配。