我正在使用Microsoft.VisualStudio.TestTools.UnitTesting
和Moq为使用FilterConfig.cs
添加了自定义授权过滤器的ASP.NET MVC 5应用编写单元测试:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeRedirect());
//...
}
}
这是自定义授权属性:
public class AuthorizeRedirect: AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
base.HandleUnauthorizedRequest(filterContext);
if (filterContext.RequestContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
{
action = "Redirect",
controller = "Error"
}));
}
}
}
我正在使用IsAnonymous
方法的略微修改版本:https://datatellblog.wordpress.com/2015/05/05/unit-testing-asp-net-mvc-authorization/。但是它只检查方法/控制器是否有明确定义的[AuthorizeRedirect]
属性;在缺席的情况下,它认为该行为是匿名的。
在检查操作是否允许匿名访问时,是否可以检测到在单元测试中全局应用了上述属性?
答案 0 :(得分:1)
以下是测试它的一种方法:查看它是否已添加到全局过滤器
class callback_change_X_train(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs={}):
X_train = my_function_to_update_X_train(...)
self.model.training_data[0] = X_train