asp.net 错误NS1000:无法截获成员InvokeMethodAsync

5f0d552i  于 2023-03-20  发布在  .NET
关注(0)|答案(1)|浏览(162)

我正在尝试对使用dapr客户端进行服务到服务调用的dotnet函数进行单元测试。我模拟了dapr客户端,但无法使用InvokeMethodAsync进行测试。我收到错误消息
错误NS1000:无法截获成员InvokeMethodAsync。只能截获接口成员以及虚拟、重写和抽象成员。
我的服务功能:

public async Task<TransactionResponse> GetTransactionDetails(Transaction transaction){
    // Fetch transaction details from another service
    var response = await _daprClient.InvokeMethodAsync<TransactionResponse>(HttpMethod.Get, "svc-transactions", transaction.id);

    return response;
}

我在单元测试中尝试模拟的方法是:

// Set up the Dapr client to return the expected response
_daprClient
    .InvokeMethodAsync<TransactionResponse>(HttpMethod.Get, "svc-transactions", "123")
    .Returns(transactionResponse);

我使用xUnit进行单元测试沿着使用NSubstitute进行模拟。

r1zk6ea1

r1zk6ea11#

看起来DaprClient没有可以被NSubstitute模仿的接口或抽象类,正如NSubstitute的文档正确地指出的那样:“如果您不能通过手动编写子类来覆盖成员,那么NSubstitute也不能!"。解决此问题的方法是创建一个接口(IDaprAccessor)并创建一个实现此接口的类(DaprAccessor)。
然后在代码中的任何地方使用DaprAccessor,而根本不必接触DaprClient。

相关问题