から取ら
public class ProductController : Controller
{
public ActionResult Index()
{
// Add action logic here
throw new NotImplementedException();
}
public ActionResult Details(int Id)
{
return View("Details");
}
}
[TestFixture]
public class ProductControllerTest
{
[Test]
public void TestDetailsView()
{
var controller = new ProductController();
var result = controller.Details(2) as ViewResult;
Assert.AreEqual("Details", result.ViewName);
}
}
例を私は彼らのように、コントローラ自体は非常にロジックを置くことを避ける傾向にあります(今見ているように)テストするのは簡単ではありません。
代わりに、必要なビジネスロジックを実行し、それをテストするサービスレイヤーを追加します。そうすれば、ロジックはMVC以外の状況でも再利用できます。あなたはおそらく、本当にユニットテストにそれを必要とすることなく、夜に眠るために管理することができます軽いですが、SomeService
を完全にすることができ
//Controller action
IHttpResult DoSomething(string input)
{
var model = SomeService.DoThings(input);
return View("~/views/DoSomethingView.cshtml", model);
}
:
この方法、あなたのコントローラのアクションは次のようにすることができますユニットは簡単にテストされます。
出典
2017-11-06 11:42:36
GPW
質問に答えるのが難しいと思わないでください。テストプロジェクトにNunitのフレームワークを "インストール"しましたか?コントローラー内のどのようなコードですか?コードを見ることなく、どのようにテストしたいかを言うことは不可能です。 – Fabio
何を試しましたか?そして何が問題なのですか?おそらく間違ったことを試そうとしていますか?コントローラをテストするのはとても簡単です。 ASP.NETスタック全体を設定する必要はありません。コントローラのインスタンスを作成し、コンストラクタ内の依存関係を渡して、実際のパラメータを使用してアクションメソッドを呼び出してください。 –
*テストしようとしているのは何ですか? * Controller *は、HTTP動詞のフィルタリングまたはルーティングを行いません。 Verendusによって投稿された答えは、方法をテストすることがどれほど簡単かを示しています。 –