2017-01-31 24 views
3

ホームコントローラのホームケースコントローラのテストケースを作成しています。私は、UserManagerクラスのChangePasswordAsyncメソッドを呼び出すMyProfileというアクションメソッドを持っています。アプリケーションのユーザー・マネージャをテストする方法を以下にユニットテスト方法Asp.Net MVC ID UserManager.ChangePasswordAsync

は私のコントローラのコードは、あなたがいない

[HttpPost] 
[ValidateAntiForgeryToken] 
public async Task<ActionResult> MyProfile(ChangePasswordViewModel model) 
{ 
    if (!ModelState.IsValid) 
    { 
     return View(model); 
    } 
var result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword); 
    if (result.Succeeded) 
     { 
    var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); 
     if (user != null) 
     { 
     await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); 
     } 
     var verification_uid = Guid.NewGuid().ToString(); 


     } 

答えて

5

です。これは、フレームワークをテストするうえでの最善の例です。アイデンティティやその他のASP.NETの部分ではなく、アプリケーションコードのテストを記述する必要があります。このコードは既にMicrosoftによって十分にテストされています。 ChangePasswordAsyncを呼び出すと、実際にはユーザーのパスワードが変更されると見なすことができます。それ以外の場合、実行しているIdentityリリースはテストランに失敗し、リリースされませんでした。

+0

ファイル - > mvc 5の新しいプロジェクトは、コントローラをテストするためのテストコードを生成します...どのようにパスワードの変更ActionResultをテストすることをお勧めしますか? – Programmer

+0

ユーザーを1つのパスワードで偽装し、別のパスワードでアクションを実行します。ユーザーのアサートパスワードは、古いパスワードではなく新しいパスワードです。かなり標準的なテストセットアップです。 –

0

私はコントローラコードをテストでテストすることができます。それはシンプルで、仕事をしますが、コントローラコードはアプリケーション層であり、私のテストではほぼ黒いボックスです... ChangePasswordAsyncが期待通りに機能していることを意味します。私は自分のテストコードを書いて、自分のテストで役割別にユーザーのリストを取得してクレームを追加して、まだ学習していなければなりません。お役に立てれば!

<TestMethod()> Public Sub Index() 

     ' Arrange 
     Dim controller As New HomeController() 

     ' Act 
     Dim result As ViewResult = DirectCast(controller.Index(), ViewResult) 

     ' **Assert that your change password returns the expected model** 
     Assert.IsNotNull(result) 
    End Sub 
関連する問題