我正在发现Mockito,通常是"模拟"。我想要一个方法在每次调用她时返回一个值。
所以我做到了
CommonJMSProducer mockedJMS = mock(CommonJMSProducer.class);
when(mockedJMS.sendMessage(any(ActiveMQTextMessage.class), anyString()))
.thenReturn(null);
但是在我调用另一个方法之后,谁将调用前一种方法,并且我的模拟从未被使用过。所以,我的问题是,"何时"仅在我使用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>");
在里面,调用了发送消息方法。
可能吗?
是的,when
仅适用于对象实例(在您的情况下为 mockedJMS
)。
如果您希望模拟对象在其他地方使用,则必须在这些地方适当地连接它 - 例如通过代码或 DI 框架。