私はRailsについての知識が不足していること、そしてあなたがすでにレールについて知っていることを教えてくれていることを私に許していますが、他のユーザーのために比較する形式にしたいと考えています。
Railsには、Unit、Functional、Integrationの3種類のテストがあります。
ユニットテストは、このパラダイムは、レールに初めから教えられているように見えるコントローラのアクション
との間の流れをテストするために、あなたのコントローラの
統合テストを、あなたのモデル
機能テストをテストします。
しかし、.NET MVCの世界では、テスト方法はRailsのようにレイアウトされていません。
多くの開発者は、レール上のモデルに単体テストを書く方法でコントローラに単体テストを書きます。あなたは基本的にメソッド(Controller Action)を呼び出し、そのメソッドからオブジェクトを取得します。それからあなたが期待する値を持っていると主張することができます。これを行うには、あまりにも多くのごまかし(HttpContextなど)をモックする必要があるので、お尻の痛みです。さらに、機能テストではありません。アプリケーションの機能をテストするのではなく、1つのメソッドだけをテストしています。
あなたのコントローラに単体テストを書いているわけではありません。あなたは実際にWebリクエストをしており、Webレスポンスを得ています。ステータスコード、クッキーなどを確認することができます。エンドからエンドまでシステムをテストしています。
これを行うにはいくつかの方法があります。NET MVC
1)これを手助けする小さなツールがSteven Sandersonにあります。
http://blog.stevensanderson.com/2009/06/11/integration-testing-your-aspnet-mvc-application/
私が最初にこれを見て、私はそれは素晴らしいと思いましたが、私が問題に遭遇し、それを使用し始めました。
2)RestSharp + NUnit - これは、この種のテストを行うための私の現在の好みです。これにより、Webリクエストをまとめてレスポンスを得ることができます。いくつかの一般的な方法では、restsharpでかなり速く動くことができます。 NUnitは必要なアサーションを提供します。私はローカルIISサーバーに対して要求を行い、応答で期待しているさまざまな項目をアサートします。あなたは実際にどのモデルがビューに割り当てられているかをテストすることはできませんが、それは私の問題ではありません。
RSpecに慣れていれば、同様のSpecFlowを得ることができます。
Railsはテストをフレームワークに組み込み、市民一人物です。 .NET MVCではあまりにも悪いです。
希望に役立ちます。
コントローラアクションは単なる方法であり、そのようにテストすることができます(アイソレーションのために擬似/モックを使用して)。各条件のアレンジ、アクト、アサートのパターンより機能テストに特化したことはありますか?アプリケーションの分離とテストを防ぐクラスの具体的なインスタンスを提供していますか? – StuperUser
理由の一部は用語です。 Railsの世界では、機能テストについて話していますが、コントローラの単体テストを意味します。私が見たことから、ほとんどのRailsプログラマーは、真のユニットテスト(テストコードのみ)と機能テスト(データベースなどの外部依存関係を含む)を混在させています。 .NETコミュニティは、それをより密接に追いかけるようです。ロイOsheroveは、.NETでのテストに関するまともな本を持っています。http://artofunittesting.com/ –