2017-02-26 14 views
0

Moq私はエラスティック・クライアントを呼び出そうとしていますが、動作しません。私はUpdateAsyncがそれらの特定の入力で呼び出されたかどうか確認したい私のテストでモック・エラスティック・クライアント・コール

var response = await _client.UpdateAsync(DocumentPath<T>.Id(doc), 
    d => d 
     .Upsert(doc) 
     .Script(.....) 
); 

私はこの一般的なrepo.Update(T doc)によって内部電話を持っています。

私は動作しませんでした次のことを試してみました:

_mock = new Mock<IElasticClient>(); 

Func<UpdateDescriptor<Document,Document>, 
    IUpdateRequest<Document,Document>> sel = d => d.Upsert(doc).Script(....); 

await repo.Update(document) 

_mock.Verify(c => c.UpdateAsync<Document>(
    It.Is<DocumentPath<Document>(
     docPath => docPath == DocumentPath<Document>.Id(document), 
    It.Is<Func<...>(s => s == sel), 
    it.IsAny<CancellationToken>() 
); 

答えて

1

私はあなたが最初の検証条件に問題があると思う:

docPath => docPath == DocumentPath<Document>.Id(document) 

あなたがNEST source codeで見ることができるように、DocumentPathクラスにはありませんoverload ==演算子 - 参照の等価性をチェックします。 DocumentPath.Id(document)は、新しいオブジェクトを作成して、条件が常にfalseになるようにします。

希望に役立ちます。

関連する問題