2016-06-17 3 views
0

MVCコントローラ用のユニットテストケースを作成する予定です。Nunitテストケースの問題

私はNUnitフレームワークを使用しています。ここで

public async Task<ActionResult> SearchView() 
{ 
    List<Role> allRoles = (await _nmClient.GetDataAsync<IEnumerable<Role>>(Session, "/UserSvc/v1/Roles?skip=0&take=" + Constants.MaxSearchRowNumber)).ToList(); 
    model.Roles=_helper.GetAvailableRoles(Session.Contents["Session"], allRoles, true); 
    List<LicenseType> allLicenseTypes = (await _Client.GetPlatformDataAsync<IEnumerable<LicenseType>>(Session, "/UserSvc/v1/Types?skip=0&take=" + Constants.MaxSearchRowNumber)).ToList(); 
    model.TypesJson = Newtonsoft.Json.JsonConvert.SerializeObject(allLicenseTypes); 

    return View("SearchUsers", model);   
} 

最初、私はビュー名を検証しようとしています、しかし、私はアクションの結果からビュー名を取得して問題に直面しています:

は、ここに私のコントローラメソッドです。ここ

は私の試験方法である:

[Test] 
public void TestSearchUserView()  
{  
    string expected= "SearchUserView";  
    PlatformUserController controller = new PlatformUserController();  
    var result= controller.SearchUserView() as Task<ActionResult>;  
             
    //Assert.AreEqual("SearchUserView", result.);   
} 

私は、同様のサービスの応答を模擬することができますか教えてください。ここで

答えて

0

はあなたが依存関係を注入することを可能にするためにあなたのコントローラを変更する必要がありますビュー名

[TestMethod] 
public async Task TestSearchUserView() { 
    //Arrange 
    string expected = "SearchUsers"; 
    var controller = new PlatformUserController(); 

    //Act 
    var actionResult = await controller.SearchUserView(); 

    //Assert 
    Assert.IsNotNull(actionResult); 
    var viewResult = actionResult as ViewResult; 
    Assert.IsNotNull(viewResult); 
    Assert.AreEqual(expected, viewResult.ViewName); 
} 

を取得する方法の一例です。 に注入可能なインターフェイスがある場合は、Moqのようなモックフレームワークを使用して、コントローラ用のモックを生成できます。コントローラに注入することができ、以下の依存関係のための良好な候補であるあなたの例から

  • _nmsPlatformClient
+0

遅れて申し訳ありませんが、上記のコードで試してみましたが、viewResultにはまだnullが返っています。私はなぜそれが起こっているのを助けてください –

+0

あなたは例外を取得していますか?私はテストサンプルをコピーして答えを出すために変更を加えたときにタイプミスに気付きました。あなたのアクションでは 'SearchUsers'という名前のビューに名前を付けますが、テストでは' SearchUsersView'が必要です。私はオリジナルのアクションにあったものに合わせて編集します。 – Nkosi

+0

例外はありません。コントローラ側でデバッグしようとしたときに表示されています.ViewResultがnull.ActionResultである理由が「System.web.Mvc.ViewResult」という単一の行として表示されている理由がわかりません。 –

1

_helper私はそのためのさまざまなバージョンの固定問題を、得ましたユニットテストプロジェクトとWebプロジェクトで使用されるSystem.Web.MVC参照。

Unit TestプロジェクトとWeb Projectで参照される 'System.Web.MVC' dllが同じであることを確認してください。私の場合は

、Webベースで使用されるバージョン> v4.0.0.0 ユニットテストプロジェクト - で使用されるバージョン> 4.0.0.1

Iは単位でバージョン「v4.0.0.0」を設置テストプロジェクトとそれが働いた。

関連する問題