2017-02-26 11 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가되도록 새 개체를 만듭니다.

희망이 있습니다.