我在mokito上写了一个简单的测试。
public class ContactServiceTest {
@Mock
private ServiceClient client;
@Mock
private ContactService contactService;
@Before
public void init() {
client = mock(ServiceClient.class);
contactService = mock(ContactService.class);
}
@Test
public void test_sendEmailContact() {
ContactDTO cDto = new ContactDTO();
cDto.setTitle("Mr");
cDto.setFirstName("Pritam");
cDto.setLastName("Mohapatra");
cDto.setTelephone("9439586575");
cDto.setEmail("pritam.pritam176@gmail.com");
cDto.setBetreff("test value");
cDto.setAnfrage("test value");
when(client.postToService("customer/sendEmailContact", cDto, Boolean.class)).thenReturn(true);
Assert.assertEquals(true, contactService.sendEmailContact(cDto));
}
}
答案 0 :(得分:1)
您可能正在ServiceClient
使用ContactService
来实际发送电子邮件联系人。但是,您将ContactService
定义为模拟,因此您实际上是在测试mock而不是真正的类。
ContactService
不需要模拟,选项1 首选选项:
ContactService
new ClientService
定义为真实班级
ServiceClient
的模拟(通过构造函数或setter,你没有发布代码所以我不知道它们是如何一起工作的)ContactService
现在是注入模拟ServiceClient
的真实实例,因此它将转到实际方法并调用client.postToService
,它将按您的定义返回true
。 选项2 将在thenCallRealMethod
模拟ContactService
上进行when(contactService.sendEmailContact(cDto)).thenCallRealMethod();
如果您确实需要它进行模拟(但我不明白为什么它应该模拟)。类似的东西:
{{1}}