ASP.NET MVC アプリケーションをテストするための追加の方法を調べていたところ、Steve Sanderson のMvcIntegrationTestFrameworkに遭遇しました。アプローチはかなり有望に見えますが、誰かが共有する実際の経験を持っているかどうか疑問に思っていました.
4 に答える
私はそれからいくつかの本当に良い結果を得ています。ここにいる他の誰かがビューをテストする必要性について何を言っても気にしません。コードの最初の行をビューに追加するとすぐに、コードが厳密にプレゼンテーション関連であっても、エラーの可能性が生じます。自動化されたテストを作成することをお勧めします。私の主な関心は、できるだけ多くの白い画面と黄色い画面の例外/エラーをキャッチすることです。そのために、Steven の紹介ブログ投稿のスニペットを使用して、ページが例外をスローすることなく適切にレンダリングされるようにしました。
Assert.IsTrue(result.ResponseText.Contains("<!DOCTYPE html"));
このフレームワークで見られる小さな落とし穴は次のとおりです。
- あなたの Web サイトがビューとアクション メソッドの間で非常に複雑なモデル バインディングを行っている場合、この例 (実際には LogonModel ビュー モデル オブジェクトを受け取るアクション メソッド) のように、かなり大きな NameValueCollections を作成していることに気付くかもしれません。このフレームワークを使用して、複雑なビュー モデル オブジェクトの型をアクション メソッドに渡す方法はわかりません。
var result = browsingSession.ProcessRequest("/account/logon", HttpVerbs.Post, new NameValueCollection
{
{"UserName","myName"},
{"Password", "myPassword"},
{"returnUrl", "/home/myActionMethod"}
});
- BrowseSession.ProcessRequest("url") を実行すると、テストしているプロジェクトの構成を使用して、テストしている Web コードを実際に実行するアプリケーション ホスト/コンテキストが作成されます。これは、テストの実行が少し遅く、実際のデータを変更する可能性があることを意味します。これに組み込まれている機能を使用して、テスト中の Web プロジェクトのデータ アクセス リポジトリを偽のバージョンにすばやく簡単に交換する方法が見つからないためです。テスト フレームワーク。言い換えれば、おそらく web.config ベースの手段を使用して独自に作成する必要があります。
少し前にardave の回答を読んだ後、私たちは実際に新しいOrchardベースのアプリケーション Marinas.info で試してみました。
最初に、このバージョンのフォークから始めることをお勧めします。これは、元のバージョンよりもセットアップが簡単だからです。
「通常の」MVC3 アプリの場合、単純に機能します。残念ながら、Orchard と一緒に使用すると、少なくとも Global.asax.cs の変更されていないバージョンではうまく動作しませんでした。そのため、まだブラウザ ベースのテストの道をたどっていますが、アプリ内で十分に高速な Orchard コマンドを実行するために使用し続けています。
私はこのフレームワークを使用していません。しかし、彼の著書Pro ASP.NET MVC Frameworkと彼が開発した別の検証フレームワークxValを読んだ私の経験に基づいて、私は「彼は素晴らしい」と言うでしょう。
少し試してみましたが、状況によっては非常に役立つ可能性があります。一般的には賛成です。さらに作業が見られれば、将来のプロジェクトで使用します。
すでにWatInをセットアップしており、このフレームワークでもう一度取り組みたくないいくつかのことを処理しているため、続行しませんでした。たとえば、ダイアログによる認証では、おそらくコードの変更が必要になります。