我有一个简单的单元测试,需要验证我的方法是否调用IModel.BasicPublish
方法。所以我写了一个简单的单元测试:
[TestMethod]
public void RequestAdded()
{
const string url = "http://localhost";
var urlBytes = Encoding.UTF8.GetBytes(url);
_proxyService.AddRequest(url);
_moqModel.Verify(x => x.BasicPublish(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<IBasicProperties>(), urlBytes), Times.Once);
}
然而,当我跑步时,我收到一个错误:
invalid verify on a non-virtual member
。
我认为这只能在具体类上发生,而不是在接口上发生。
private Mock<IModel> _moqModel;
有什么想法吗?
答案 0 :(得分:2)
BasicPublish签名:
fill_in_valid_place_information
Moq和其他类似的模拟框架只能模拟接口,抽象方法/属性(在抽象类上)或具体类上的虚方法/属性。
这是因为它生成了一个代理,它将实现接口或创建一个派生类,该类覆盖那些可重写的方法以拦截调用。