有没有人尝试过单元测试OnResultExecuted方法?
我有一个简单的控制器,可以呈现通知消息,然后清除它们。
public class NotificationController : BaseController
{
public NotificationController(INotificationMessagesContext notificationMessagesContext)
{
Contract.Requires<AppEx.NullArgumentException>(
notificationMessagesContext != null, "Notification messages context must be set");
notificationContext = notificationMessagesContext;
}
private readonly INotificationMessagesContext notificationContext;
[ChildActionOnly]
public PartialViewResult Index()
{
return notificationContext == null ? null : PartialView(notificationContext.Messages);
}
protected override void OnResultExecuted(ResultExecutedContext filterContext)
{
if (notificationContext != null && notificationContext.Messages.Any())
notificationContext.ClearAll();
base.OnResultExecuted(filterContext);
}
}
单元测试Index()方法没有任何帮助,因为MVC会调用OnResultExecuted。我可以创建一个易于测试的自定义属性,但为此实现自定义属性似乎太过分了。
谢谢
答案 0 :(得分:1)
就个人而言,我会创建一个内部函数来执行onresultexecuted调用,然后使内部函数可用于使用它们的测试项目。
您可以忽略onresultexecuted然后直接测试内部函数。
以下是如何使内部对另一个项目可见的链接。