在.NET中使用Moq覆盖方法主体

时间:2019-03-12 14:38:03

标签: unit-testing asp.net-core mocking moq xunit

我有一个带有一些GET函数的Web api控制器,我想对其进行测试。在此GET函数内部,有一个公共无效方法 SendCachingHeaders

if(UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera))
    {
        picker!.delegate = self
        picker!.sourceType = UIImagePickerControllerSourceType.camera
        self.picker!.showsCameraControls = true;
        self.present(picker!, animated: true, completion: nil)
    }

在测试类中,我创建 mockController

public void SendCachingHeaders(int cacheFor) {
            Request.HttpContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
            Request.HttpContext.Response.Headers.Add("Cache-Control", "max-age="+cacheFor+", public");
        }

SendCachingHeaders 在实现-> IRawEntityController

的控制器内部

所以我想用 moq 对象覆盖 SendCachingHeaders 方法主体,如下所示:

var mockController = new Mock<IRawEntityController>();

但是,当我运行测试时,我可以在debbuger中看到原来的 SendCachingHeaders 方法被调用,而我的模拟对象被完全忽略了。

我完全不理解回叫是做什么的,还是我遗漏了明显的内容?

还有一件事->运行测试时, cacheFor 的值( SendCachingHeaders 方法的参数为'5'。可能无关的信息。

感谢您的帮助。

0 个答案:

没有答案