1

有没有人尝试过对 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() 方法没有任何帮助,因为 OnResultExecuted 是由 MVC 调用的。我可以创建一个易于测试的自定义属性,但是为此实现自定义属性似乎有点过头了。

谢谢

4

1 回答 1

1

就个人而言,我会创建一个 onresultexecuted 调用的内部函数,然后将内部函数提供给使用它们的测试项目。

您可以忽略然后执行的onresult并直接测试内部功能。

这是如何使内部结构对另一个项目可见的链接。

http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.internalsvisibletoattribute.aspx

于 2013-05-02T11:53:48.307 回答