C# 如何模拟ElasticSearch NEST';s GetAsync

C# 如何模拟ElasticSearch NEST';s GetAsync,c#,moq,nest,C#,Moq,Nest,我正在尝试使用GetAsync从ElasticSearch实例获取一个文档。我是这样做的 var document= await client.GetAsync<MyDocument>("documentId"); return document.Source; [Fact] public async Task TestGetDocument_ExpectSuccess() { var mockDocument = new Mock<IGetResponse<M

我正在尝试使用
GetAsync
从ElasticSearch实例获取一个文档。我是这样做的

var document= await client.GetAsync<MyDocument>("documentId");
return document.Source;
[Fact]
public async Task TestGetDocument_ExpectSuccess()
{
    var mockDocument = new Mock<IGetResponse<MyDocument>>(MockBehavior.Strict);
        mockDocument
            .Setup(r => r.Source)
            .Returns(_myDocument);
    var mockClient = new Mock<IElasticClient>(MockBehavior.Strict);
        mockClient
            .Setup(client => client.GetAsync(
                _documentId,
                It.IsAny<Func<GetDescriptor<MyDocument>, IGetRequest>>(),
                It.IsAny<CancellationToken>()))
            .ReturnsAsync(mockDocument.Object);
    // ...
}
我被错误中的
SequenceExtensions
位弄糊涂了,因为我没有使用
SetupSequence
(如果它指的是这个)。我尝试将
responseMock
类型更改为
GetResponse
,它消除了编译错误,但现在我无法正确模拟
Source
的返回值,因为我没有使用接口


有人知道我如何解决这个问题吗?

最终创建了
GetResponse
的实例,并通过反射设置
源代码。但是我更喜欢用一种更干净的方式来做,而不需要用我自己的界面来包装所有的东西。有同样的问题。对碰撞进行评论。
'ISetup<IElasticClient, Task<GetResponse<MyDocument>>>' does not contain a definition for 'ReturnsAsync' and the best extension method overload 'SequenceExtensions.ReturnsAsync<IGetResponse<MyDocument>>(ISetupSequentialResult<Task<IGetResponse<MyDocument>>>, IGetResponse<MyDocument>)' requires a receiver of type 'ISetupSequentialResult<Task<IGetResponse<MyDocument>>>' [Foo.Bar.ElasticSearch.UnitTests]csharp(CS1929)