Использование MvcContrib TestHelper для подтверждения того, что входящий маршрут не должен отображаться - PullRequest
4 голосов
/ 25 января 2012

Поиск метода в классе MvcContrib.TestHelper.RouteTestingExtensions с именем ShouldNotMap.Существует ShouldBeIgnored, но я не хочу тестировать IgnoreRoute вызов.Я хочу проверить, что определенный входящий маршрут не должен быть сопоставлен ни с каким ресурсом.

Есть ли способ сделать это с помощью MvcContrib TestHelper?

Обновление

Только что попробовал, и, кажется, работает.Это правильный путь?

"~/do/not/map/this".Route().ShouldBeNull();

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Я думаю, что вы ищете следующее:

"~/do/not/map/this".ShouldBeIgnored();

За кадром это утверждает, что маршрут обрабатывается StopRoutingHandler.

0 голосов
/ 03 января 2013

Я искал то же самое. В итоге я добавил следующие методы расширения для реализации ShouldBeNull и еще короче ShouldNotMap:

В RouteTestingExtensions.cs:

    /// <summary>
    /// Verifies that no corresponding route is defined.
    /// </summary>
    /// <param name="relativeUrl"></param>
    public static void ShouldNotMap(this string relativeUrl)
    {
        RouteData routeData = relativeUrl.Route();
        routeData.ShouldBeNull(string.Format("URL '{0}' shouldn't map.", relativeUrl));
    }

    /// <summary>
    /// Verifies that the <see cref="RouteData">routeData</see> is null.
    /// </summary>
    public static void ShouldNotMap(this RouteData routeData)
    {
        routeData.ShouldBeNull("URL should not map.");
    }

В GeneralTestExtensions.cs:

    ///<summary>
    /// Asserts that the object should be null.
    ///</summary>
    ///<param name="actual"></param>
    ///<param name="message"></param>
    ///<exception cref="AssertFailedException"></exception>
    public static void ShouldBeNull(this object actual, string message)
    {
        if (actual != null)
        {
            throw new AssertFailedException(message);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...