2009-05-15 12 views
1

私は、コントローラがユニットテストasp.net mvc - viewengineはビューを見つけることができますか?

return View(); 

または何を返し、viewengineビューを見つけることができないとき、私たちのMVCのセットアップに共通の破損ポイントがあることを発見しています。

コントローラをテストし、その結果のViewResultでExecuteResultを実行することができますが、基礎となるViewEngineは仮想ディレクトリに結び付けられているため、テストする方法を理解できません。

理想的には、ビューをレンダリングするだけでなく、それが見つかったかどうかを判断できることが理想的です。

これについてネットではあまり見つからず、実際に 'テスト可能な' asp.net mvcが実際どのようになっているのか不思議です。

答えて

1

あなたの問題は、あなたがあまりにも多くをテストしようとしていることだと思います。しかし、いくつかの初期の出発点その少し難しいのコードを見ずに

は: - コントローラを分離する必要があり、基礎となるWebサーバの設定に依存しない

1)あなたの仮想ディレクトリからあなたのコントローラをデカップリングしてください。あなたはこれで何にアクセスしていますか?

お使いのコントローラを使用すると、正しいデータがあなたのビューに渡されているかどうかを確認するために使用することができ、これはあなたのモデルが付属している必要があり、するViewResultを返します。 stubs \ mocksと依存関係注入を使用して、コントローラがデータベースリポジトリなどの基礎となるサービスに正しく通信していることを確認します。

リポジトリの実装をカバーするための統合テストを別に用意してください。

2)WatinなどのWebテストフレームワークを使用して、表示レンダリングを期待どおりに検証します。これにより、WebページとHTML domとのやりとりを行い、期待どおりに動作することを確認できます。ユニットテストでコントローラをテストします。 2つの異なる層に対する2つの別個の試験。

単体テストの目的は、テストとコードを可能な限り隔離しておくことです。

関連する問題