2015-04-05 21 views
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
+0

我不太明白你要問什麼。您希望mockito發送消息的問題是?或者是因爲消息變量爲空?如果是後者,那不是因爲你沒有模擬'greenMail.getReceivedMessages()'。 – 2015-04-05 13:43:06

+0

我的問題是我嘲笑emailProperties,但是當我調試時,我發現emailProperties不是調用when()返回vakue。 – 2015-04-05 14:16:01

+0

我試過了,但它確實返回了我之前設置的值。你如何調試它?你不是直接指向該領域的權利?你怎麼試着檢查這個函數'emailproperties.getUsername()'並且看看結果是什麼。 – 2015-04-05 15:22:53

回答

0

是完成。更改爲@spy @Mock private EmailProperties emailProperties;

  • 並設置值,因爲它是。
  • 爲期15天的努力。