0
使用訛詐和JUnit與mokito但Junit的mokito util.properties顯示空moking後
我寫電子郵件的測試,當我使用
時(emailproperties.getUsername())。thenReturn(「ABC @ gmail.com「);顯示空
- 這裏是我的代碼
公共類EmailServiceImplTest {
@InjectMocks
EmailServiceImpl emailServiceImpl = new EmailServiceImpl();
@Mock
private MessageTemplateService messageTemplateService;
@Mock
private EmailProperties emailProperties;
//private static final Logger LOGGER = Logger.getLogger(EmailServiceImplTest.class);
private GreenMail greenMail;
private static final String USER_NAME = "hascode";
private static final String EMAIL_USER_ADDRESS = "[email protected]";
private static final String EMAIL_TO = "[email protected]";
private static final String EMAIL_SUBJECT = "Test E-Mail";
private static final String EMAIL_TEXT = "This is a test e-mail.";
private static final String LOCALHOST = "localhost";
private static final String USER_PASSWORD = "abcdef123";
@Before
public void testSmtpInit() {
MockitoAnnotations.initMocks(this);
greenMail = new GreenMail(ServerSetupTest.SMTP);
greenMail.start();
greenMail.setUser(EMAIL_USER_ADDRESS, USER_NAME, USER_PASSWORD);
}
@Test
public void sendContactEmail() {
MessageTemplate mock_template=new MessageTemplate();
mock_template.setId(2);
mock_template.setBody("Hi ${name} want to contact");
mock_template.setSubject("Contact EMAIL");
ContactDTO mock_Dto=new ContactDTO();
mock_Dto.setFirstName("abc");
mock_Dto.setLastName("xyz");
Properties mock_props = System.getProperties();
mock_props.put("mail.smtp.host", LOCALHOST);
mock_props.put("mail.smtp.auth", "true");
mock_props.put("mail.smtp.port", ServerSetupTest.SMTP.getPort());
mock_props.put("mail.debug", "true");
when(messageTemplateService.getMessageTemplateById("2")).thenReturn(mock_template);
emailProperties.setAdminTo("[email protected]");
when(emailProperties.getAdminTo()).thenReturn("[email protected]");
when(emailProperties.getContactMsgKey()).thenReturn("2");
when(emailProperties.getProps()).thenReturn(mock_props);
when(emailProperties.getSenderEmail()).thenReturn(EMAIL_USER_ADDRESS);
when(emailProperties.getSender()).thenReturn(USER_NAME);
when(emailProperties.getHost()).thenReturn(LOCALHOST);
when(emailProperties.getUserName()).thenReturn(EMAIL_USER_ADDRESS);
when(emailProperties.getPassword()).thenReturn(USER_PASSWORD);
emailServiceImpl.sendContactEmail(mock_Dto);
MimeMessage[] messages = greenMail.getReceivedMessages();
assertNotNull(messages);
assertEquals(1, messages.length);
}
- 當我調試它顯示空我在做什麼wronge
我不太明白你要問什麼。您希望mockito發送消息的問題是?或者是因爲消息變量爲空?如果是後者,那不是因爲你沒有模擬'greenMail.getReceivedMessages()'。 – 2015-04-05 13:43:06
我的問題是我嘲笑emailProperties,但是當我調試時,我發現emailProperties不是調用when()返回vakue。 – 2015-04-05 14:16:01
我試過了,但它確實返回了我之前設置的值。你如何調試它?你不是直接指向該領域的權利?你怎麼試着檢查這個函數'emailproperties.getUsername()'並且看看結果是什麼。 – 2015-04-05 15:22:53