RuntimeType вместо Type in C # Unit Test - PullRequest
7 голосов
/ 31 июля 2009

В одном из моих модульных тестов я хочу проверить, все ли публичные методы возвращают тип ActionResult. Вот мой метод испытаний:

    [TestMethod]
    public void Public_Methods_Should_Only_Return_ActionResults()
    {

        MethodInfo[] methodInfos = typeof(MyController).GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);

        foreach (MethodInfo methodInfo in methodInfos)
        {
            Assert.IsInstanceOfType(methodInfo.ReturnType, typeof(System.Web.Mvc.ActionResult));

        }

    }

Этот тест взрывается при первом методе из MyController:

[Authorize]
public ActionResult MyList()
{
    return View();
}

Со следующей ошибкой:

Assert.IsInstanceOfType failed. Expected type:<System.Web.Mvc.ActionResult>. Actual type:<System.RuntimeType>.  

Когда я устанавливаю точку останова для этого Assert и проверяю методInfo.ReturnType, он имеет тип Type и это ActionResult.

Может кто-нибудь объяснить мне, почему тест взорвался и что нужно сделать, чтобы он заработал?

Спасибо заранее, MR

1 Ответ

12 голосов
/ 31 июля 2009

Используйте Assert.AreEqual вместо Assert.IsInstanceOfType. Вы хотите проверить тип результата, а не тип отображаемой информации о типе.

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