Mockitoは、正規表現を使用して、メソッドが正しい引数で呼び出されていることを確認します

ウサギのダッタ:

説明

次のクラスをテストしようとしています:

Class UserSynchronizer(){
   private static org.apache.log4j.Logger log = ... ;

   public Sync(candidate) { 
     ...
     if (candidate.inValidForSync()) {
       log.debug("Candidate #" + candidate.getId() + ": Not syncing");
     }
     else {
       log.debug("Syncing");
     }
   }

 }

mockitoがどの引数log.debugで呼び出されたかを検出できるかどうかを確認したいのですが、それに対して何らかの正規表現チェックを実行できるかどうかを確認したいと思います。つまり、次のことを行います。

  • ログオブジェクトに提供された引数をキャプチャします(これは私のテストATMでモックしています)
  • モック候補オブジェクトがfalseを返す場合は、「正規表現を使用して」「候補#\ d +:同期していません」のようなパターンに一致するかどうかを確認します

テストコード

以下のコードは私が出発点として持っているものです:

public void verifySyncDoesntSyncWhenInvalid(){
  //Setup candidate mock
  Candidate invalidSyncCandidateMock = mock(Candidate.class);
  when(invalidSyncCandidateMock.inValidForSync()).thenReturn(true);

  //Setup log mock
  UserSynchronizer userSynchronizer = ...;
  Field logField = userSynchronizer.getClass().getDeclaredField("log");
  logField.setAccessible(true);
  logField.set(userSynchronizer, logMock);

  //Call sync
  userSynchronizer.sync(invalidSyncCandidateMock);

  //Verify that debug was called with ("Candidate #\d+: Not syncing")
  ???
}

問題

問題は、それlog.debugが複数回呼び出されることです。に提供されている引数をキャプチャして、log.debug同期に対して無効な候補で呼び出されたときに、ロガーオブジェクトが候補が同期されなかったことを正しくログに記録したいと考えています。

編集:これが以前に尋ねられた場合、私はお詫び申し上げます。関連する質問へのリンクを投稿してください:)

fge:

あなたはこれを使うことができます:

final List<String> messages = new ArrayList<>();

final Answer<Void> catchMeAll = new Answer<Void>()
{
    @Override
    public Void answer(final InvocationOnMock invocation)
    {
        messages.add((String) invocation.getArguments()[0]);
    }
}

doAnswer(catchMeAll).when(logMock).debug(anyString());

(注:このコードは、Logger.debug()メソッドがを返すことを前提としていますvoid。私は知らないが、誰Logger知っているかはわかりません)

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Mockitoを使用して、メソッドが特定の引数で呼び出されたことを確認するにはどうすればよいですか?

分類Dev

Mockito.inOrderを使用して、モックメソッドが正確な順序で呼び出されたことを確認します。

分類Dev

Mockito.inOrderを使用して、モックメソッドが正確な順序で呼び出されたことを確認します。

分類Dev

Mockitoを使用して特定のメソッドが呼び出されなかったことを確認するにはどうすればよいですか?

分類Dev

文字列にメソッド呼び出しが含まれているかどうかを確認するPython正規表現

分類Dev

Mockitoを使用して、メソッドの後に何も呼び出されないことを確認する

分類Dev

Typemockを使用して、正確な引数を使用してメソッドがx回呼び出されたことを表明する

分類Dev

linq拡張メソッドがmoqで呼び出されていることを確認します

分類Dev

Moqを使用してメソッドが特定の回数呼び出されたことを確認するにはどうすればよいですか?

分類Dev

Moqを使用してメソッドが特定の回数呼び出されたことを確認するにはどうすればよいですか?

分類Dev

すべてのgetterメソッドが呼び出されていることを確認します

分類Dev

Mockito-オブジェクトのメソッド内の静的メソッドが呼び出されていることを確認します

分類Dev

Mockito-オブジェクトのメソッド内の静的メソッドが呼び出されていることを確認します

分類Dev

XCTAssertを使用してクラスメソッドが呼び出されていることを確認するにはどうすればよいですか?

分類Dev

静的メソッドが正確な引数で呼び出されたことを確認するにはどうすればよいですか?

分類Dev

静的メソッドが正確な引数で呼び出されたことを確認するにはどうすればよいですか?

分類Dev

Mockito:キャプチャされたオブジェクトのメソッドが呼び出されていることを確認します

分類Dev

ILogger <T> .Log拡張メソッドがMoqを使用して呼び出されたことを確認するにはどうすればよいですか?

分類Dev

正規表現。文字列をチェックしてパディングし、特定の文字列形式が使用されていることを確認します

分類Dev

メソッド呼び出し内で正規表現またはパターンマッチングを使用していますか?

分類Dev

Mockitoは:どのようにする方法を確認するために、他のメソッドへの呼び出しを無視して、正確なパラメータで一度だけ呼ばれていましたか?

分類Dev

2つのメソッドのいずれかがMockitoを使用して呼び出されたことを確認するにはどうすればよいですか?

分類Dev

メソッドが特定の引数で一度呼び出されたことを確認する方法を確認しますが、他の引数での呼び出しは無視しますか?

分類Dev

Mockito:引数が正規表現パターンを使用したマップであることを確認します

分類Dev

Vueutils-メソッドがjestで呼び出されているかどうかを確認します

分類Dev

文字入力をメソッドと一致させて呼び出す正規表現を作成するにはどうすればよいですか?

分類Dev

正規表現を使用して、日付の年が2000を超えていることを確認するにはどうすればよいですか?

分類Dev

OCMockito:モックのメソッドが将来いつか呼び出されることを確認します

分類Dev

EasyMock / PowerMockを使用してプライベートメソッド内でvoidメソッドが呼び出されたことを確認します

Related 関連記事

  1. 1

    Mockitoを使用して、メソッドが特定の引数で呼び出されたことを確認するにはどうすればよいですか?

  2. 2

    Mockito.inOrderを使用して、モックメソッドが正確な順序で呼び出されたことを確認します。

  3. 3

    Mockito.inOrderを使用して、モックメソッドが正確な順序で呼び出されたことを確認します。

  4. 4

    Mockitoを使用して特定のメソッドが呼び出されなかったことを確認するにはどうすればよいですか?

  5. 5

    文字列にメソッド呼び出しが含まれているかどうかを確認するPython正規表現

  6. 6

    Mockitoを使用して、メソッドの後に何も呼び出されないことを確認する

  7. 7

    Typemockを使用して、正確な引数を使用してメソッドがx回呼び出されたことを表明する

  8. 8

    linq拡張メソッドがmoqで呼び出されていることを確認します

  9. 9

    Moqを使用してメソッドが特定の回数呼び出されたことを確認するにはどうすればよいですか?

  10. 10

    Moqを使用してメソッドが特定の回数呼び出されたことを確認するにはどうすればよいですか?

  11. 11

    すべてのgetterメソッドが呼び出されていることを確認します

  12. 12

    Mockito-オブジェクトのメソッド内の静的メソッドが呼び出されていることを確認します

  13. 13

    Mockito-オブジェクトのメソッド内の静的メソッドが呼び出されていることを確認します

  14. 14

    XCTAssertを使用してクラスメソッドが呼び出されていることを確認するにはどうすればよいですか?

  15. 15

    静的メソッドが正確な引数で呼び出されたことを確認するにはどうすればよいですか?

  16. 16

    静的メソッドが正確な引数で呼び出されたことを確認するにはどうすればよいですか?

  17. 17

    Mockito:キャプチャされたオブジェクトのメソッドが呼び出されていることを確認します

  18. 18

    ILogger <T> .Log拡張メソッドがMoqを使用して呼び出されたことを確認するにはどうすればよいですか?

  19. 19

    正規表現。文字列をチェックしてパディングし、特定の文字列形式が使用されていることを確認します

  20. 20

    メソッド呼び出し内で正規表現またはパターンマッチングを使用していますか?

  21. 21

    Mockitoは:どのようにする方法を確認するために、他のメソッドへの呼び出しを無視して、正確なパラメータで一度だけ呼ばれていましたか?

  22. 22

    2つのメソッドのいずれかがMockitoを使用して呼び出されたことを確認するにはどうすればよいですか?

  23. 23

    メソッドが特定の引数で一度呼び出されたことを確認する方法を確認しますが、他の引数での呼び出しは無視しますか?

  24. 24

    Mockito:引数が正規表現パターンを使用したマップであることを確認します

  25. 25

    Vueutils-メソッドがjestで呼び出されているかどうかを確認します

  26. 26

    文字入力をメソッドと一致させて呼び出す正規表現を作成するにはどうすればよいですか?

  27. 27

    正規表現を使用して、日付の年が2000を超えていることを確認するにはどうすればよいですか?

  28. 28

    OCMockito:モックのメソッドが将来いつか呼び出されることを確認します

  29. 29

    EasyMock / PowerMockを使用してプライベートメソッド内でvoidメソッドが呼び出されたことを確認します

ホットタグ

アーカイブ