如何创建单元测试来测试RedirectToActionResult?

时间:2018-04-29 20:33:03

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

我创建了一个async Task<ActionResult>创建方法,该方法具有用户输入数据,数据保存在azure表中。我需要对它进行单元测试以显示它重定向到索引

[HttpPost]
[ActionName("Create")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> CreateAsync([Bind(Include = "Id,StudentNo,Name,Surname,Email,Telephone,Mobile,Active")] Item item)
{
    if (ModelState.IsValid)
    {
        await DocumentDBRepository<Item>.CreateItemAsync(item);
        return RedirectToAction("Index");
    }

    return View(item);
}

2 个答案:

答案 0 :(得分:0)

  

我需要对其进行单元测试以显示它重定向到索引

然后做像Jasmin这样的UI单元测试导致服务器端单元测试不适用于该原因,而在测试中没有MVC管道存在并完成所有这些路由,httpcontext等根本不存在。相反,你应该专注于单元测试业务逻辑

答案 1 :(得分:0)

检查返回结果的实际类型

public async Task ShouldRedirect()
{
    var controller = new Controller();

    var result = await controller.Create(item);

    result.Should().BeOfType<RedirectToRouteResult>();
}