Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在单元测试属性时,如何断言OnActionExecuting_C#_Unit Testing_Nunit_Rhino Mocks - Fatal编程技术网

C# 在单元测试属性时,如何断言OnActionExecuting

C# 在单元测试属性时,如何断言OnActionExecuting,c#,unit-testing,nunit,rhino-mocks,C#,Unit Testing,Nunit,Rhino Mocks,我有一个动作过滤器。我想单元测试它在OnActionExecuting()方法上。我能够使用RhinoMock模拟HttpContext、ActionParameters和其他必需的对象 下面是它的样子 public class AuthorizeABCAttribute: ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) {

我有一个动作过滤器。我想单元测试它在
OnActionExecuting()
方法上。我能够使用RhinoMock模拟HttpContext、ActionParameters和其他必需的对象

下面是它的样子

public class AuthorizeABCAttribute: ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var abc = filterContext.HttpContext.Request.Headers["X-GOD-MODE"];
        var ip = filterContext.HttpContext.Request.UserHostAddress;
        var email = filterContext.ActionParameters["EmailAddress"] as string;

        if (ISALLOWED(abc, ip, email))
            base.OnActionExecuting(filterContext);
        else
            filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.NotFound);
    }
}
因此,根据条件允许访问,否则将给出404


那么在我的单元测试中,我如何为这两种不同的条件断言呢?

为什么不在测试中创建一个authorizeabcatribute实例,调用它的OnActionExecuting,然后测试ActionExecutingContext.Result值?允许的
决定了什么?假设这是测试对象的一部分,您是否应该有一个场景列表,该列表将导致它返回
true
false
?如果是这样的话,这不是简单地在传递给此方法的
filterContext
上设置这些内容的问题吗?