嘲弄MVC控制器中的内在依赖性

时间:2015-06-02 04:35:32

标签: c# model-view-controller mocking tdd

我不明白你将如何测试以下控制器。

你会如何模拟请求?在我看来,要模拟它,你需要传递一个Request方法,但这是错误的。或者你需要将它注入到Controller构造函数中,但这似乎也是错误的。

我完全了解这将如何与ISomethingService或ISomethingRepository一起使用,但对于内在的依赖性,我只是没有得到它。

由于

    public ActionResult Test()
    {
        return View(Request.Browser.Crawler ? "A" : "B");
    }

1 个答案:

答案 0 :(得分:1)

您需要创建模拟http上下文。有多个库可以这样做,但你基本上需要做这样的事情:

var request = new HttpRequest("", "http://localhost/", "");
var writer = new StringWriter();
var response = new HttpResponse(writer);
var context = new HttpContext(request, response);