Mockito“何时”可能性

时间:2013-10-31 09:44:51

标签: java unit-testing mocking mockito stubbing

我发现Mockito并且一般都是“嘲笑”。 我想要一个方法在每次调用时返回一个值。

所以我做了

CommonJMSProducer mockedJMS = mock(CommonJMSProducer.class);
when(mockedJMS.sendMessage(any(ActiveMQTextMessage.class), anyString()))
            .thenReturn(null);

但是在我调用另一个方法之后,我会调用前一个方法而且我的模拟从未使用过。 所以,我的问题是,“when”仅在我使用mockedJMS或始终创建对象时才有效吗?

在我的测试中,我打电话给这样的服务

this.request("api/receiver")
            .setHeader("TYPE", "ACCESREFUSE")
            .setHeader("APPLICATION", "Bruno Appli")
            .setHeader("TOMCAT", "tomcat1")
            .setHeader("SERVER", "server1")
            .post("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><ACCESREFUSE><IDOper>0002</IDOper><DateEvt>131015144340</DateEvt><IDEvt>0</IDEvt><IDJoueur>123456789</IDJoueur><HashJoueur>0000000000000000000000000000000000000000</HashJoueur><IDSession>301090</IDSession><IPJoueur>81.252.190.129</IPJoueur><TypAg>JC</TypAg><CauseRefus>Interdiction temporaire</CauseRefus><TypeRefus>AutoInterdit</TypeRefus></ACCESREFUSE>");

在内部,调用sendMessage方法。

有可能吗?

1 个答案:

答案 0 :(得分:0)

是的,when仅适用于对象实例(在您的情况下为mockedJMS)。

如果您希望您的模拟对象在其他地方使用,您必须在这些地方适当地连接它 - 例如通过代码或DI框架。