2つの異なるメソッドがモックオブジェクトで同じメソッドを呼び出すことを確認します

誰か

私はモックフレームワークとしてMoqを使用しています。2つの異なるメソッドを実行したいという状況があります。どちらもメソッドをインターフェースと呼びます。両方のメソッドが、インターフェイス上でまったく同じメソッドを同じ順序で同じパラメーターで呼び出すことを確認したいと思います。説明のために、ここにコードがあります:

[TestMethod]
public void UnitTest()
{
var classToTest = new ClassToTest();
Mock<IMyInterface> mock1 = new Mock<IMyInterface>();
// Setup the mock
Mock<IMyInterface> mock2 = new Mock<IMyInterface>();
// Setup the mock


classToTest.MethodToTest(mock1.Object);
classToTest.DifferentMethodToTest(mock2.Object);

// here I need help:
mock1.Verify(theSameMethodsAsMock2);
}

たとえば、IMyInterface2つのメソッドがMethod1(int i)ありMethod2(string s)、、の場合MethodToTest、構造があればテストに合格する必要があります

void MethodToTest(IMyInterface x)
{
x.Method1(42);
x.Method2("example");
x.Method1(0);
}

そしてDifferentMethodToTestそのように見えます:

void MethodToTest(IMyInterface x)
{
int a = 10 + 32;
x.Method1(a);
string s = "examples";
x.Method2(s.Substring(0, 7));
x.Method1(0);
// might also have some code here that not related to IMyInterface at all, 
// e.g. calling methods in other classes and so on
}

同じ順序、同じメソッド、同じパラメータ。これはMoqで可能ですか?または、別のモックフレームワークが必要ですか?

誰か

私は自分で解決策を見つけましたInvocationAction

[TestMethod]
public void Test()
{
var classToTest = new ClassToTest();

var methodCalls1 = new List<string>();
var invocationAction1 = new InvocationAction((ia) =>
{
     string methodCall = $"{ia.Method.Name} was called with parameters {string.Join(", ", ia.Arguments.Select(x => x?.ToString() ?? "null"))}";
     methodCalls1.Add(methodCall);
});
Mock<IMyInterface> mock1 = new Mock<IMyInterface>();
mock1.Setup(x => x.Method1(It.IsAny<int>())).Callback(invocationAction1);
mock1.Setup(x => x.Method2(It.IsAny<string>())).Callback(invocationAction1);

// Same for mock2 ...


classToTest.MethodToTest(mock1.Object);
classToTest.DifferentMethodToTest(mock2.Object);

CollectionAssert.AreEqual(methodCalls1, methodCalls2);
}

コード、特に文字列の比較が非常に不器用であることは知っていますが、当面はそれで十分です。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

異なるオブジェクトで同じメソッドを呼び出すと、戻り値の型が異なります

分類Dev

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

分類Dev

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

分類Dev

同じメソッドを呼び出す2つの異なるオブジェクトを使用してクラスを定義する方法

分類Dev

同じオブジェクトPHPのメソッドを数回呼び出すことはできません

分類Dev

2つの連続するメソッド呼び出しが、毎回異なるパラメーターを使用してモックメソッドを呼び出すことを確認します

分類Dev

別のメソッドと同じ名前でオブジェクトのメソッドを呼び出す

分類Dev

Pythonモック-モックオブジェクトでメソッドが呼び出されているかどうかを確認します

分類Dev

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

分類Dev

非モックオブジェクトのメソッドが呼び出されたことを確認する方法は?

分類Dev

Mockito:メソッド内で作成されたオブジェクトでメソッドが呼び出されたことを確認する方法は?

分類Dev

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

分類Dev

参照なしで同じオブジェクトに対して複数のメソッドを呼び出す

分類Dev

同じ属性を持つ2つの異なるオブジェクトでequal()メソッドを使用する

分類Dev

Pytest:同じメソッドの複数の呼び出しを異なる副作用でモックします

分類Dev

EasyMockはメソッドが同じテストで複数の異なるオブジェクトを返すことを期待しています

分類Dev

モックオブジェクトのメソッドの呼び出しではなかったことを確認するにはどうすればよいですか?モッキート

分類Dev

Qtは2つの異なるスレッドで同じオブジェクトの2つのメソッドを実行します

分類Dev

静的クラス メソッドは、クラスの外部で呼び出されるとオブジェクトを返しますが、異なるクラスの内部で呼び出されると空のオブジェクトを返します。

分類Dev

Moqを使用して、オブジェクトのさまざまな状態で使用するメソッド呼び出しを確認します

分類Dev

IDが「」のオブジェクトは、GAEのJPAの同じメソッドで複数のJpaRepositoryを呼び出すときに、異なるオブジェクトマネージャーによって管理されます。

分類Dev

複数の異なるオブジェクトで同じティックメソッドを呼び出す方法は?

分類Dev

メソッド呼び出しが適切なオブジェクトで適切なメソッド名を使用していることを確認するにはどうすればよいですか?

分類Dev

1行で同じクラスの2つのオブジェクトに対して同じメソッドを呼び出す

分類Dev

Moqを使用して呼び出されていることを確認するMockオブジェクトのメソッドをセットアップするための呼び出しが必要ですか?

分類Dev

イベントメソッドへのオブジェクト呼び出しを確認します

分類Dev

イベントメソッドへのオブジェクト呼び出しを確認します

分類Dev

getobjectメソッドを取得して他のオブジェクトメソッドを呼び出すことができません

分類Dev

異なるスレッドで同じクラスの複数のオブジェクトのメソッド呼び出しを行う方法は?

Related 関連記事

  1. 1

    異なるオブジェクトで同じメソッドを呼び出すと、戻り値の型が異なります

  2. 2

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

  3. 3

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

  4. 4

    同じメソッドを呼び出す2つの異なるオブジェクトを使用してクラスを定義する方法

  5. 5

    同じオブジェクトPHPのメソッドを数回呼び出すことはできません

  6. 6

    2つの連続するメソッド呼び出しが、毎回異なるパラメーターを使用してモックメソッドを呼び出すことを確認します

  7. 7

    別のメソッドと同じ名前でオブジェクトのメソッドを呼び出す

  8. 8

    Pythonモック-モックオブジェクトでメソッドが呼び出されているかどうかを確認します

  9. 9

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

  10. 10

    非モックオブジェクトのメソッドが呼び出されたことを確認する方法は?

  11. 11

    Mockito:メソッド内で作成されたオブジェクトでメソッドが呼び出されたことを確認する方法は?

  12. 12

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

  13. 13

    参照なしで同じオブジェクトに対して複数のメソッドを呼び出す

  14. 14

    同じ属性を持つ2つの異なるオブジェクトでequal()メソッドを使用する

  15. 15

    Pytest:同じメソッドの複数の呼び出しを異なる副作用でモックします

  16. 16

    EasyMockはメソッドが同じテストで複数の異なるオブジェクトを返すことを期待しています

  17. 17

    モックオブジェクトのメソッドの呼び出しではなかったことを確認するにはどうすればよいですか?モッキート

  18. 18

    Qtは2つの異なるスレッドで同じオブジェクトの2つのメソッドを実行します

  19. 19

    静的クラス メソッドは、クラスの外部で呼び出されるとオブジェクトを返しますが、異なるクラスの内部で呼び出されると空のオブジェクトを返します。

  20. 20

    Moqを使用して、オブジェクトのさまざまな状態で使用するメソッド呼び出しを確認します

  21. 21

    IDが「」のオブジェクトは、GAEのJPAの同じメソッドで複数のJpaRepositoryを呼び出すときに、異なるオブジェクトマネージャーによって管理されます。

  22. 22

    複数の異なるオブジェクトで同じティックメソッドを呼び出す方法は?

  23. 23

    メソッド呼び出しが適切なオブジェクトで適切なメソッド名を使用していることを確認するにはどうすればよいですか?

  24. 24

    1行で同じクラスの2つのオブジェクトに対して同じメソッドを呼び出す

  25. 25

    Moqを使用して呼び出されていることを確認するMockオブジェクトのメソッドをセットアップするための呼び出しが必要ですか?

  26. 26

    イベントメソッドへのオブジェクト呼び出しを確認します

  27. 27

    イベントメソッドへのオブジェクト呼び出しを確認します

  28. 28

    getobjectメソッドを取得して他のオブジェクトメソッドを呼び出すことができません

  29. 29

    異なるスレッドで同じクラスの複数のオブジェクトのメソッド呼び出しを行う方法は?

ホットタグ

アーカイブ