我正在迁移一个用MVP编写的webforms应用程序来利用MVC框架,并想知道我应该如何测试一个返回partialview的简单控制器动作。当使用MVP时,我会对view =期望值的每个属性断言为true。
正在测试的控制器行动
<OutputCache(Location:=OutputCacheLocation.None)> _
Function Edit(ByVal id As Integer) As ActionResult
Dim Form As Form = mFormService.GetFormById(id)
Return PartialView("Form", Form)
End Function
我要验证的是“视图”值在视图中正确显示(但这是我应该像使用MVP模式时那样测试的吗?)
答案 0 :(得分:3)
您应该测试ViewModel及其中的数据。此外,您应该测试结果是否是您期望的结果类型(例如,在大多数情况下为ViewResult)。最后,您应该检查视图名称。
例如,这是对控制器操作的测试,该操作返回用于将新用户实体添加到现有公司的创建表单。公司的ID作为id参数提供给控制器:
[Test]
public void Create_Get_Shows_View()
{
//Setup
//setup Controller, fakes, mocks, etc... here
//Execution
var result = (ViewResult)Controller.Create(companyID);
//Assertion
var model = (UsersController.CreateViewModel) result.ViewData.Model;
Assert.AreEqual("", result.ViewName);
Assert.IsNotNull(model.User);
Assert.AreEqual(companyID,model.CompanyID);
}
编辑:您可能还想测试是否设置了正确的HttpVerb。你可以通过反思来做到这一点。