我正在尝试模拟一个对象
_logger = new Mock<ILogger>();
_sender = new Mock<ServiceBusMessageSender>();
此行抛出错误:
_sender.Setup(x => x.SendMessageToQueue(It.IsAny<MyClass>(), It.IsAny<ILogger>())).ReturnsAsync(true);
这是我无法设置的方法的签名:
public async Task<bool> SendMessageToQueue(MyClass msg, ILogger log);
我不明白为什么这个方法不能被覆盖。
我没想到会出现错误, 我尝试使用mockbehaviour.loose,可验证
@ProgrammingLlama 在评论中给出了答案,我在方法签名中添加了 virtual 。
问题很简单,我没有意识到我看到的大多数示例都是模拟接口而不是类,因此该方法可以被重写,而不是在类中