Утверждение типа возврата действия контроллера MVC - PullRequest
2 голосов
/ 27 сентября 2010

Как вы можете утверждать, что ожидаемый тип возвращается, когда он упакован в System.RuntimeType?

В рамках более крупного модульного теста для проверки того, что действию назначены правильные параметры и фильтры действий, я утверждаю против заполненного экземпляра MethodInfo. Когда я утверждаю против «action.ReturnParameter», он терпит неудачу, так как говорит, что тип - System.RunTimeType. Хотя я понимаю, что это обертка вокруг ожидаемого типа, я просто не могу найти способ утверждать, что обернутый экземпляр имеет ожидаемый тип - лучший метод, который я до сих пор придумал, это утверждать против имени или полного имени, но это ужасно, поскольку он просто использует «волшебные строки».

Кто-нибудь может помочь? Поскольку мои поиски в Google не дали ничего полезного, я полагаю, что это действительно простое решение, просто я его не вижу.

Код выглядит следующим образом:

[TestMethod]
public void CheckActionFilterSet()
{
    MethodInfo action = new CustomerController((new MockHttpContext()).Object)
                                .GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance)
                                .Where(mi => mi.Name.Equals("Search")).First();
    Assert.That(action.ReturnParameter.ParameterType, Is.InstanceOf(typeof(ViewResult)), "View Result should be of expected type");
}

Сообщение об исключении:

Результат просмотра должен быть ожидаемого типа

Ожидается: экземпляр

Но было:

1 Ответ

3 голосов
/ 27 сентября 2010

Просто вызовите метод контроллера и проверьте тип возвращаемого объекта:

var result = new CustomerController((new MockHttpContext()).Object).Search(....);

Assert.That(result, Is.InstanceOf(typeof(ViewResult)), "View Result should be of expected type");

Вы также можете проверить значения ViewData / model, если хотите ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...