Tom*_*han 6 asp.net-mvc unit-testing action-filter
我一直试图找到一些关于此的直截了当的信息,但是我无法 - 或者我发现的一直是模糊的让我理解正在发生的事情,或者对于错误的事情来说太具体了,例如我找到了一个单元测试AuthorizeAttribute的教程.(第三种选择当然是我太笨了,没有意识到我正在阅读我正在寻找的信息......在这种情况下我仍然需要帮助,因为我很笨:P)
我希望能够测试两件事:
而且我很无能为力.谁能让我朝着正确的方向推动我真正需要测试的东西?我的安排,行动和断言部分应包含哪些内容?
一点点细节,如果我不够清楚:
我有一个CustomValidationFilter应该检查两个提交的表单值是否相同,ModelStateError如果没有则添加一个.我想验证所加入的错误与正确的错误消息,如果值是不一样的,那就是错误不如果值增加是相等的(且非空).
我也有一个Write动作GuestbookController.我想验证过滤器是否已应用于此操作.
在测试中使用反射。
var method = typeof(MyController).GetMethod("MyMethod");
var attribute = method.GetCustomAttributes(typeof(CustomValidationFilter),false);
.Cast<CustomValidationFilter>()
.SingleOrDefault();
Assert.IsNotNull( attribute );
Assert.AreEqual( "value", atttribute.SomeProperty );
Run Code Online (Sandbox Code Playgroud)
为类中的方法创建单元测试。使用适当的数据模拟 filterContext 并检查该方法应该设置的任何变量实际上是否符合您的预期。
public void AttributeTest()
{
var httpContext = MockRepository.GenerateMock<HttpContextBase>();
var controller = new FakeController();
controller.controllerContext = new ControllerContext( httpContext, new RouteData(), controller );
...
attribute.OnActionExecuting( filterContext );
Assert...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3032 次 |
| 最近记录: |