我在所有测试中都使用相同的控制器实例,并且刚刚发现(因为我的测试以任意顺序运行)如果您Controller.View
不带参数调用,它将传回ViewDataDictionary
由先前调用创建的Controller.View
具有参数的相同!
一个简单的例子(使用 NUnit 和 MvcContrib)
<Test()> _
Public Sub Test_A()
Dim r As ViewResult = MockController.MethodWhichReturnsViewData().AssertViewRendered()
Assert.IsNotNull(r.Model)
End Sub
<Test()> _
Public Sub Test_B()
Dim r As ViewResult = MockController.MethodWhichDoesNotReturnViewData().AssertViewRendered()
Assert.IsNull(r.Model) '<==== fails, has the same view data as Test_A!
End Sub
这对我的测试不利(显然)。我可以想象两种解决方案,我都不喜欢,有什么建议吗?(作为奖励,有人能理解为什么 MS 会这样设计吗?)
- 明确指定
Nothing
所有空调用的模型Controller.View
- 添加
TestSetUp
清除模型的方法