带有http请求的单元测试控制器

时间:2015-11-25 12:06:53

标签: c# unit-testing

在C#中,我的控制器中有一个方法,它从请求对象中获取内容。

public class xController: BaseController
{
    [HttpPost]
    [Route("confirm")]
    public void Confirmation(string Content)
    {
        var content = Request.Content.ReadAsStringAsync().Result;
    }

}

我使用以下代码构建了一个单元测试,但是对于请求对象,错误带有null ref

[Test]
public void Confirmation()
{
   //arrange
   var con = new xController();

   //act
   var res = con.Confirmation("hello");

   //assert
   Assert.IsNotNull(res);
}

2 个答案:

答案 0 :(得分:1)

使用TestHelper中的MVCContrib,您应该可以写下这样的内容:

[Test]
public void Confirmation()
{
    //arrange
    TestControllerBuilder builder = new TestControllerBuilder();
    var con = new xController();
    builder.InitializeController(con);

    //act
    var res = con.Confirmation("hello");

    //assert
    Assert.IsNotNull(res);
}

答案 1 :(得分:0)

你可以

1)在控制器中注入HttpContextBase并使用它来访问其任何属性,例如'请求'

2)模拟并在测试中设置ControllerContext。

围绕这些方面的事情:

margin: 0 auto;
position: relative;