私は学習し、ASP.NET MVC 2を使い始めています。私の質問は、広く私のテスト内で資格情報を渡すことによってユーザーのログインをシミュレートする方法です。asp.net mvc 2内でfakeiteasyを使用して単体テスト用のユーザーログインを偽装するにはどうすればいいですか?
私はMSpecを使用しており、私のテストを書くために私の頭をfakeiteasyの周りにしようとしています。これまでは、認証されていないユーザーがページにアクセスしようとしたときに、1つのテストを正しく書き込んだとします(テスト条件をパスします)。
Subject(typeof(HomeController))]
public class context_for_a_home_controller_for_not_logged_user
{
protected static HomeController HomeController;
Establish context =() =>
{
// Create controller
HomeController = new HomeController();
HomeController.ControllerContext = A.Fake<ControllerContext>();
};
}
[Subject(typeof(HomeController))]
public class when_the_home_page_is_requested : context_for_a_home_controller_for_not_logged_user
{
static ActionResult result;
Because of =() =>
result = HomeController.Index();
It should_return_the_log_in_page_if_user_not_logged_in =() =>
{ result.ShouldBeAView().And().ShouldUseDefaultView(); };
}
これまでのところとても良いです。しかし、認証されたユーザーがホームコントローラーにヒットする場合のシナリオをテストしたいと思います。私は認証されたユーザーをシミュレートする方法に立ち往生しており、何か助けや助言が歓迎されるでしょう。
TIA、
デビッド
こんにちはダーリン、この回答を投稿していただきありがとうございます。残念ながら、A.CallTo(()=> HomeController.User).Returns(fakePrincipal); HomeControllerがテスト中の対象であり、偽のオブジェクトではないため、エラーが発生しています。コードを取得するための提案がありますか? – DavidS
はい、あなたは正しいです。コードを更新しました。 –
それも動作します! – DavidS