模拟MVC控制器中的内在依赖

本文关键字:依赖 MVC 控制器 模拟 | 更新日期: 2023-09-27 17:52:39

我不明白你如何测试像下面这样的控制器。

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

我完全明白这将如何与ISomethingService或ISomethingRepository一起工作,但对于内在依赖,我只是不明白。

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

模拟MVC控制器中的内在依赖

您需要创建一个模拟HTTP上下文。有多个库可以做到这一点,但您基本上需要这样做:

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