JavaMailSenderを使用したMockito

ティグラン:

私のテストは失敗しました。これは私のテストクラスです。

public class EmailGeneratorServiceTests {

    @Mock
    JavaMailSender javaMailSender;

    EmailGeneratorService emailGeneratorService;

    @Before
    public void before() {
        MockitoAnnotations.initMocks(this);
        emailGeneratorService = new EmailGeneratorService(javaMailSender);
    }


    @Test
    public void generateAndSendMessageSuccess() throws MessagingException, IOException {
        String email = "[email protected]";
        String body = "Some contents.";
        String subject = "Some subject";
        emailGeneratorService.generateAndSendMessage(email, body, subject);
        List<Message> inbox = Mailbox.get(email);
        //inbox.size === 0
        assertTrue(inbox.size() == 1);
        assertEquals(subject, inbox.get(0).getSubject());
        assertEquals(body, inbox.get(0).getContent());
    }
}

inbox.size()を呼び出すと、0が返されますが、期待値は1です。サーバーはsmtpです。

これはEmailGeneratorServiceです。

@Service
public class EmailGeneratorService {
    SimpleMailMessage simpleMailMessage;
    JavaMailSender javaMailSender;

    @Autowired
    public EmailGeneratorService(JavaMailSender javaMailSender) {
        this.javaMailSender = javaMailSender;
        this.simpleMailMessage = new SimpleMailMessage();
    }

    public void generateAndSendMessage (String email, String messageBody, String subject) {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setTo(email);
        simpleMailMessage.setText(messageBody);
        simpleMailMessage.setSubject(subject);
        javaMailSender.send(simpleMailMessage);
    }
}

何が悪いのか書いて、何が悪いのか説明してください。

sc0der:

JavaMailSender引数を取得してそれを主張するには、キャプチャする必要があります。

ArgumentCaptor<SimpleMailMessage> emailCaptor = ArgumentCaptor.forClass(SimpleMailMessage .class);
verify(javaMailSender, times(1)).send(emailCaptor.capture());

List<SimpleMailMessage> actualList = emailCaptor.getAllValues();
assertTrue(actualList.size() == 1);
assertEquals(subject, actualList.get(0).getSubject());
assertEquals(body, actualList.get(0).getContent());

ErrorCollector複数の値をアサートするユーザーは、次の@Beforeようメソッドの前に定義します

@Rule
public ErrorCollector collector= new ErrorCollector();

、そしてアサーションでは次のように使用します:

collector.checkThat(getResult(), equalTo("ERROR!"));

テストは次のようになります。

public class EmailGeneratorServiceTests {

    private static final String EMAIL = "[email protected]";
    private static final String BODY = "Some contents.";
    private static final String SUBJECT = "Some subject";

    @Mock
    private JavaMailSender javaMailSender;

    private EmailGeneratorService emailGeneratorService;

    @Rule
    public ErrorCollector collector = new ErrorCollecto();  

    @Before
    public void before() {
        MockitoAnnotations.initMocks(this);
        emailGeneratorService = new EmailGeneratorService(javaMailSender);
    }


    @Test
    public void generateAndSendMessageSuccess() throws Exception {
        // Arrange
        emailGeneratorService.generateAndSendMessage(email, body, subject);

        // Act
        Mailbox.get(email);

        // Assert
        ArgumentCaptor<SimpleMailMessage> emailCaptor = 
        ArgumentCaptor.forClass(SimpleMailMessage .class);
        verify(javaMailSender, times(1)).send(emailCaptor.capture());

        List<SimpleMailMessage> actualList = emailCaptor.getAllValues();
        collector.checkThat(actualList.size(), equalTo(1));
        collector.checkThat(actualList.get(0).getSubject(), equalTo(SUBJECT));
        collector.checkThat(actualList.get(0).getContent(), equalTo(CONTENT));
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Mockitoを使用したMockPreferenceManager

分類Dev

voidメソッドを使用したMockito

分類Dev

Mockitoを使用したモックResultSet

分類Dev

mockitoを使用したJUnitテスト

分類Dev

Mockitoを使用した例外のテスト

分類Dev

MockitoとDaggerを使用したSharedPreferences

分類Dev

Specs2を使用したMockitoのNoSuchMethodError

分類Dev

JavaMailSenderを使用してGmailの「機密モード」を使用する方法

分類Dev

org.springframework.mail.javamail.JavaMailSenderを自動配線できませんでした

分類Dev

Mockitoを使用したモックはInvocationTargetExceptionを返します

分類Dev

mockitoを使用した依存関係の注入なし

分類Dev

Mockitoを使用したRestTemplate呼び出しのモック

分類Dev

Mockito returnsFirstArg()を使用します

分類Dev

mockitoを使用したメソッド参照のキャプチャ

分類Dev

mockitoを使用したSpringサービスの単体テスト

分類Dev

MockitoのWhenメソッドを使用した問題

分類Dev

Power Mockitoを使用した静的メソッドのモック

分類Dev

Mockitoを使用したMonoとFluxのテスト

分類Dev

Mockitoを使用した@Resource Springプロパティのモック

分類Dev

mockitoを使用したUnitest Create(Post)メソッド

分類Dev

JUnitのvoidメソッドを使用したMockito

分類Dev

Mockitoを使用したモックビルドバージョン

分類Dev

Mockitoを使用したRunnableのユニットテスト

分類Dev

mockitoを使用したAndroidテストカスタムビュー

分類Dev

MockitoとFirebaseを使用したユニットテスト

分類Dev

Mockitoを使用したLazyLoggingのユニットテスト

分類Dev

Mockitoを使用したPOJOのユニットテスト

分類Dev

mockitoを使用したモックコンストラクタ

分類Dev

mockitoを使用したNullPointer例外テストサーブレット

Related 関連記事

  1. 1

    Mockitoを使用したMockPreferenceManager

  2. 2

    voidメソッドを使用したMockito

  3. 3

    Mockitoを使用したモックResultSet

  4. 4

    mockitoを使用したJUnitテスト

  5. 5

    Mockitoを使用した例外のテスト

  6. 6

    MockitoとDaggerを使用したSharedPreferences

  7. 7

    Specs2を使用したMockitoのNoSuchMethodError

  8. 8

    JavaMailSenderを使用してGmailの「機密モード」を使用する方法

  9. 9

    org.springframework.mail.javamail.JavaMailSenderを自動配線できませんでした

  10. 10

    Mockitoを使用したモックはInvocationTargetExceptionを返します

  11. 11

    mockitoを使用した依存関係の注入なし

  12. 12

    Mockitoを使用したRestTemplate呼び出しのモック

  13. 13

    Mockito returnsFirstArg()を使用します

  14. 14

    mockitoを使用したメソッド参照のキャプチャ

  15. 15

    mockitoを使用したSpringサービスの単体テスト

  16. 16

    MockitoのWhenメソッドを使用した問題

  17. 17

    Power Mockitoを使用した静的メソッドのモック

  18. 18

    Mockitoを使用したMonoとFluxのテスト

  19. 19

    Mockitoを使用した@Resource Springプロパティのモック

  20. 20

    mockitoを使用したUnitest Create(Post)メソッド

  21. 21

    JUnitのvoidメソッドを使用したMockito

  22. 22

    Mockitoを使用したモックビルドバージョン

  23. 23

    Mockitoを使用したRunnableのユニットテスト

  24. 24

    mockitoを使用したAndroidテストカスタムビュー

  25. 25

    MockitoとFirebaseを使用したユニットテスト

  26. 26

    Mockitoを使用したLazyLoggingのユニットテスト

  27. 27

    Mockitoを使用したPOJOのユニットテスト

  28. 28

    mockitoを使用したモックコンストラクタ

  29. 29

    mockitoを使用したNullPointer例外テストサーブレット

ホットタグ

アーカイブ