10

MvcContrib.TestHelper ShouldMapTo()拡張メソッドを使用してルートを単体テストしようとして<TController>いますが、テストが失敗し、次のエラーメッセージが表示されます。

failed: Method MvcContrib.TestHelper.RouteTestingExtensions.ShouldMapTo:
type argument 'ReviewController' violates the constraint of type parameter
'TController'.

しかし、ReviewControllerは制約を満たしています。これは、System.Web.Mvc.Controllerから継承するSmartControllerと呼ばれるクラスから継承します。したがって、私はこのエラーを解決する方法について途方に暮れています。

これが私のユニットテストです:

[Test]
public void Should_map_review_controller_routes_correctly()
{
    MvcApplication.RegisterRoutes(RouteTable.Routes);
    "~/reviews"
        .ShouldMapTo<ReviewController>(c => c.Index());
}

ReviewControllerクラスの宣言は次のとおりです。

public class ReviewController : SmartController<Review, ReviewForm>
{
...
}

そして、SmartControllerクラスの宣言:

public abstract class SmartController<TModel, TForm> : Controller
    where TModel : new()
{
...
}

ニヤリと笑うために、継承階層からSmartControllerを削除して、ReviewControllerがControllerから直接継承するようにしましたが、それでもエラーがスローされます。

誰かが私が間違っていることを知っていますか?

4

1 に答える 1

4

このメソッドを MVC 2 と MVC 2 でビルドされた MvcContrib で使用したところ、すべて正常に機能しました。私はこの問題を見つけました:

http://groups.google.com/group/mvccontrib-discuss/browse_thread/thread/356203db654fa4bd?pli=1

古い MvcContrib アセンブリ (MVC1 でビルド) を MVC 2 で使用していますか? はいの場合は、MVC 2 の MvcContrib バイナリまたはソースをダウンロードする必要があります。

于 2010-03-06T01:23:29.150 に答える