moqの使用時に奇妙な問題があります。
あるプロジェクトで、メソッドが呼び出されたことを確認しようとすると、呼び出されていないと表示されます。テストをデバッグすると、明らかにメソッドが呼び出されます。
これは、キャッシュに何かを追加したかどうかを確認したい単純なキャッシュ オブジェクトです。Add、Contains、および Get メソッドがあります。
私の検証は、次の方法で正常に機能します。
bool Contains(string key);
T Get<T>(string key);
しかし、これではありません:
void Add(string key, object objectToCache, CacheItemPolicy policy);
私はこのようにメソッドに与える正確な値を試してみました:
mockedCache.Verify(p => p.Add(LOCATION_CACHE_KEY, locations, policy), Times.Once());
It.IsAny の使用
mockedCache.Verify(p => p.Add(It.IsAny<string>(), It.IsAny<IEnumerable<string>>(),
It.IsAny<CacheItemPolicy>()), Times.Once());
そして、何を試しても、0回呼び出されたという応答が得られます。
私はこれまでにこの行動を見たことがありません。誰が何が悪いのか教えてもらえますか?
ありがとう
マイケル
更新: @SergRogovtsev が示唆したように、生成された出力 moq を見ました。
私のメソッドはIEnumerableではなくListで呼び出されました