I\xe2\x80\x99m 尝试在 C# 中编写单元测试,我需要CreateBatchWrite<T>使用 Moq 模拟该方法的响应,但我可以\xe2\x80\x99t 实例化该BatchWrite<T>对象的对象。\nI\xe2\x80\ x99m 这样做:
this.dynamoDbMock\n .Setup(m => m.CreateBatchWrite<SomeType>(It.IsAny<DynamoDBOperationConfig>()))\n .Returns(Mock.Of<BatchWrite<SomeType>>());\nRun Code Online (Sandbox Code Playgroud)\n\n知道如何模拟这个对象。\n谢谢!
\n我正在尝试对与 MessageReceiver 类具有依赖关系的 Azure 函数进行单元测试。类定义如下:
public class MessageReceiver : ClientEntity, IMessageReceiver, IReceiverClient, IClientEntity
Run Code Online (Sandbox Code Playgroud)
我需要moq的方法属于接口IMessageReceiver
我尝试模拟 MessageReceiver 类,并设置 CompleteAsync 方法,但出现错误:
Non-overridable members (here: MessageReceiver.CompleteAsync) may not be used in setup / verification expressions.
Run Code Online (Sandbox Code Playgroud)
据我所知,这意味着非虚拟、抽象或重写的方法不能被重写/最小起订量。我尝试手动创建一个子类并使用定义中的新关键工作声明一个方法 CompleteAsync,
public new Task CompleteAsync(string lockToken)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,代码会在调用 CompleteAsync 方法时引发错误:
Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Run Code Online (Sandbox Code Playgroud)
但我认为它不起作用,因为我尝试按 F11 进入该方法,但我的方法没有被调用...有什么想法或建议吗?