4

MvcContrib.TestHelper.RouteTestingExtensionsShouldNotMap という名前のクラスのメソッドを探しました。IgnoreRouteShouldBeIgnored はありますが、呼び出しをテストしたくありません。特定の着信ルートがどのリソースにもマップされるべきではないことをテストしたいと思います。

MvcContrib TestHelper を使用してこれを行う方法はありますか?

アップデート

これを試しただけで、うまくいくようです。これは正しい方法ですか?

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

2 に答える 2

1

私はあなたが次のものを探していると思います:

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

バックグラウンドで、これはルートが StopRoutingHandler によって処理されることをアサートします。

于 2012-03-10T14:53:19.473 に答える
0

私は同じものを探していました。私は実装するために次の拡張メソッドを追加し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);
        }
    }
于 2013-01-03T10:21:10.073 に答える