Mockito然后没有被叫

时间:2018-02-09 11:29:42

标签: sockets callback mocking mockito

我正在测试与套接字的交互 我已经嘲笑了套接字,并想测试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);

不会调用答案。

如何让它发挥作用?

1 个答案:

答案 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[]

...然后调用应该匹配。