我需要在测试MVC控制器时注入JSON数据

时间:2017-08-15 19:59:42

标签: c# asp.net-mvc unit-testing

我有一个MVC控制器,它从输入流中获取JSON。由于数据类型不同,我不能只将数据设置为函数的参数。

在单元测试中,我是否设置了request.inputstream?

public class ApiController : Controller
{
    public async Task<JsonResult> Log()
    {
        var data = new System.IO.StreamReader(Request.InputStream).ReadToEnd()
        var value = Newtonsoft.Json.JsonConvert.DeserializeObject<Models.MyClass>(input);
    }
}

[TestMethod()]
public void LogTest()
{
    var controller = new ApiController();
    // need to inject JSON code request.input stream???
    var result = controller.Log();
    result.Wait();
    Assert.AreEqual(((dynamic)result.Result.Data).success, true);
}

1 个答案:

答案 0 :(得分:0)

您无法手动设置Request.InputStream。它只是吸气剂。 https://msdn.microsoft.com/en-us/library/system.web.httprequest.inputstream(v=vs.110).aspx