2016-11-10 11 views
1

私のクライアントは、すべてのプロジェクトに対して100%のコードカバレッジを得たいと考えています。私は、Web APIがnUnitを使用するための非常に長いテストケースをほとんど書いていません。しかし、私のクライアントは、xUnitをMockフレームワークとしてMoqを使ってユニットテストフレームワークとして使うことに決めました。Sitecoreプロジェクトの単位テストケースを作成する

私はsitecoreプロジェクトの単体テストケースでは一度も働いたことがないので、誰もが私たちのアプローチに光を当てることができますか?誰もが最初の方法として、以下のメソッドのサンプルテストケースを書いてください。 GlassMapperFrameworkをORMとして使用しています。

public class RegistrationController : GlassController 
    { 
    public ActionResult RegistrationInitiation() 
      { 
       var someobject = GetDataSourceItem<IRegistrationMainContent>(); 

       return View(someobject); 
      } 
} 
+0

オンラインで検索しました[ユニットテストのSitecore MVC](https://mhwelander.net/2014/04/30/unit-testing-sitecore-mvc/) – Nkosi

+0

オンラインでの検索が完了しました[レンズを通しての生活Glass Controller](https://cardinalcore.co.uk/2015/09/29/life-through-a-lens-unit-testing-with-glass-controllers/) – Nkosi

+0

ええ、いくつか試してみましたが、問題に直面していましたコントローラコンストラクタを初期化します。例外は、GlassControllerの依存関係が満たされていないことです。 – PaRsH

答えて

1

コントローラをテストするには、コントローラにSitecore Contextを注入する必要があります。 GlassControllerには、GlassController(ISitecoreContext)にオーバーロードメソッドがあります。これはあなたのコントローラーのユニットテストに使用されます。また、ここでは...

を必要に応じて他のオーバーロードがありますが、コントローラにユニットテストに必要な、より完全なコードです

private Mock<IRegistrationModel> RegistrationModel { get; set; }; 
private RegistrationController Controller { get; set; } 

[TestInitialize] 
public void Setup() 
{ 
    var mockSitecoreContext = new Mock<ISitecoreContext>(); 
    this.RegistrationModel = new Mock<IRegistrationModel>(); 

    this.RegistrationModel.SetupAllProperties(); 

    mockSitecoreContext.Setup(sc =>sc.GetItem<IRegistrationModel 
     (It.IsAny<string>(), false, false)). 
     Returns(this.RegistrationModel.Object); 

    this.Controller = new RegistrationController {SitecoreContext = 
     mockSitecoreContext.Object } 
} 

[TestMethod] 
public void Your_Unit_Test_Name() 
{ 
    //....perform unit test here 
    this.Controller.SitecoreContext = null; 

    var result = this.Controller.GetIndex() as ViewResult; 

    //Assert .... 
} 

ご質問がある場合は、私に教えてください!

+0

上記のコードでは、引数なしでRegistrationControllerが呼び出されます。コンパイル時エラーが発生しています。 私は試しました コントローラ=新しいRegistrationController(sitecoreContextMock.Object)。しかし、GlassControllerの依存関係を解決していないため、うまくいきました。 ここで言及することは、私はGlassControllerを使用しています、mvcコントローラではありません。何か案が? – PaRsH

+0

PaRsH、私は遅れた応答をお詫び申し上げます。上記のコードを修正しました。上記のコードは、GlassControllerを継承している場合、GlassControllerを使用した単体テストの詳細を提供します。そうでない場合は、RegistratioControllerをGlassControllerに置き換えることができます。 –

関連する問題