3

私はこのテストを持っています

[Test]
public void SaveInventoryItemLoad_Will_Call_WCF_Service_SaveInventoryItemLoad()
{ 
    adapter.SaveInventoryItemLoad(new List<InventoryItemLoadProxy>());
    itemMasterBusinessClientMock.Verify(x => x.SaveInventoryItemLoad(It.IsAny<List<InventoryItemLoadProxy>>()), Times.Once());
}

WCF 側でメソッドをテストしたので、問題はありませんでした。必要なのは、「ねえ、サービスを呼び出しましたか?ええ!」と言うだけでした。とはいえ...上記のリストを10個以下のチャックに分割する必要があります。つまり、23個のアイテムのリストは、10個、10個、3個の3つのリストになります。したがって、ステップ1はもちろん、検証するユニットテストを作成することですSaveInventoryItemLoad メソッドに 10 個以上のアイテムをプッシュしていないこと。もちろん、メソッドが X 回呼び出されたことを確認できますが、それは私が望んでいることではありません。メソッドに提供されたリストが <= 10 であることを確認したいのですが、その方法がわかりません。moqクイックスタートをトロールしましたが、どうすればいいのかわかりません。

私はこれが何とかなるだろうと思った

// Verify setter with an argument matcher
mock.VerifySet(foo => foo.Value = It.IsInRange(1, 5, Range.Inclusive));

しかし、私はそれを機能させることができないようです。これまでにこれに遭遇したことはないと思います。誰でもこれを行う方法を知っていますか?

ありがとう

4

2 に答える 2

3

私は Moq を使用しておらず、Rhino.Mocks のみを使用していますが、元のコードを から変更して、それがリストではなく、10 項目以下のリストであるIt.IsAny<List<InventoryItemLoadProxy>>ことを制約できるようにする必要があると思います。

オンラインでざっと見ると、構文は次のようになりますIt.Is<List<InventoryItemLoadProxy>>(list => list.Count <= 10)

于 2012-06-14T18:09:08.200 に答える
2

コードは次のとおりです。

itemMasterBusinessClientMock.Verify(x => x.SaveInventoryItemLoad(It.Is<List<InventoryItemLoadProxy>>(l=>l.Count < 100)), Times.Once());

以下にいくつかの例を示します。

于 2012-06-14T18:09:43.410 に答える