模拟rabbitMQ IModel验证错误

时间:2017-02-09 08:27:35

标签: c# unit-testing rabbitmq

我有一个简单的单元测试,需要验证我的方法是否调用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;

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

BasicPublish签名:

fill_in_valid_place_information

Moq和其他类似的模拟框架只能模拟接口,抽象方法/属性(在抽象类上)或具体类上的虚方法/属性。

这是因为它生成了一个代理,它将实现接口或创建一个派生类,该类覆盖那些可重写的方法以拦截调用。