これは ASP.NET MVC v1 です (v2 はまだ使用していません)。
次のようなルートエントリがあります。
routes.MapRoute(
"Srp",
"soeg-{searchQuery}/{listingType}",
new { controller = "Srp", action = "Search", listingType = string.Empty },
new { listingType = "privat|forhandler|"}
);
およびそれに一致するアクション:
public ActionResult Search(QueryParameters queryParameters)
これは完全に機能します。mvc フレームワークは、searchQuery と ListingType を同じ名前の QueryParameters オブジェクトの 2 つのプロパティにマップすることを認識しています。
私の問題は単体テストです。私は Mvccontrib プロジェクトを使用しており、ShouldMapTo メソッドを愛しています:
[Test]
public void RegisterSrpRoutes_SoegWithKeywordAndValidListingType_ShouldMapCorrectly()
{
var queryParameters = new QueryParameters {SearchQuery = "hest", ListingType = "privat"};
"~/soeg-hest/privat".ShouldMapTo<SrpController>(controller => controller.Search(queryParameters));
}
それはうまくいきません!私は自分のアクションに次のような特定のパラメータを持っていました:
public ActionResult Search(string searchQuery, string listingType)
これは機能しました (明らかに、単体テストは、この 1 つのオブジェクトではなく、2 つのパラメーター (文字列) を使用して Search にマップしようとします。
すべてのプロパティをパラメーターとして書き込むことに戻る以外に、問題を解決する方法を知っている人はいますか? プロパティのmvc自動マッピングはうまく機能しますが、mvccontribs testhelperをそれで動作させる方法があることを願っています。