2017-09-18 5 views
0

私はSitecoreデベロッパーであり、私のユニットテストではSitecore.FakeDbを使用します。Sitecore.FakeDbを使用したユニットテストGetItemのSitecore.Nexusインスタンシエーションエラーが発生しました

System.TypeInitializationException:サイトコア「のタイプ初期化子」私は.GetItem上記2(...)の行のいずれかを試してみたときに、私は次のエラーを取得する

[TestClass] 
public class UnitTest1 
{ 
    [TestMethod] 
    public void Test_ArticleController_With_SitecoreItem() 
    { 
     Sitecore.Data.ID about_us_itemId = Sitecore.Data.ID.NewID; 
     Sitecore.Data.ID careers_itemId = Sitecore.Data.ID.NewID; 

     using (var db = new Sitecore.FakeDb.Db 
     { 
      new Sitecore.FakeDb.DbItem("about-us", about_us_itemId) 
      { 
       new Sitecore.FakeDb.DbField(SitecoreFieldIds.WTW_REDIRECT_TO) { Value = "/WTW-Home/about-us/overview" } 
      }, 
      new Sitecore.FakeDb.DbItem("careers", careers_itemId) 
      { 
       new Sitecore.FakeDb.DbField(SitecoreFieldIds.WTW_REDIRECT_TO) { Value = "http://careers.willistowerswatson.com" } 
      } 
     }) 
     { 
      Sitecore.Data.Items.Item sampleItem3 = db.GetItem(about_us_itemId); // throws error 
      Sitecore.Data.Items.Item sampleItem2 = db.GetItem("/sitecore/content/careers"); //throws error 

      //Assert 
      Assert.AreEqual("abc", "abc"); 
     }; 
    } 
} 

:私は、次のコードを持っています.SecurityModel.License.LicenseManager 'が例外をスローしました。 と、InvalidOperationException:Sitecore.FakeDb、Sitecore.Kernelを、:私は私のユニットテストプロジェクトに(とりわけ)以下の関連文献が含まれている「Sitecore.Nexus Sitecore.Nexus.Licensing.NexusLicenseApi」

をタイプをインスタンス化できませんでしたSitecore.Mvc、Moq、Glass.Mapper、Glass.Mapper.Sc、Glass.Mapper.Sc.Mvc、Castle.Core。私はSitecore.Nexusが必要ですか?はいの場合、どこから入手できますか?

私が持っているApp_Config /これでこの設定あり/ Sitecore.FakeDb.configファイルだけでなく、App_Config/app.configファイル、インクルード:

<sitecore> 
<settings> 
    <setting name="LicenseFile" value="..\..\license.xml" /> 
</settings> 
</sitecore> 

このエラーがある理由上の任意のアイデアを発生し、正確にそれを修正する方法?ここで

ことができます場合は、完全なスタックトレースです:

System.TypeInitializationExceptionが発生した HRESULT = 0x80131534 メッセージ= 'Sitecore.SecurityModel.License.LicenseManager' のタイプ初期化子が例外をスローしました。 = Sitecore.Kernel のStackTrace 出典:Sitecore.SecurityModel.License.LicenseManager.DemandRuntime(ブールacceptExpress)で Sitecore.Data.Managers.DefaultItemManager.get_FallbackProviderで ()Sitecore.Data.Managers.DefaultItemManagerで 。 Sitecore.Data.Managers.DefaultItemManager.ExecuteAndReturnResultで<> c__DisplayClass2f.b__2e() [TArgs、TResult](文字列pipelineName、列pipelineDomain、のFunc 1 pipelineArgsCreator, Func 1 fallbackResult) Sitecore.Data.Managers.DefaultItemManager.GetItem(IDのitemId、で(ID itemId、言語言語、バージョンバージョン、データベースデータベース) Sitecore.Data.Managers.ItemManager.GetItem(ID itemId(IDアイテムID)、言語バージョン、バージョンデータベース、セキュリティチェックセキュリティチェック) 、言語バージョン、バージョンデータベース、データベースデータベース) at Sitecore.Data.DefaultDatabase.GetItem(ID itemId) at Sitecore.FakeDb.Db.GetItem(ID id) at WTW.Feature.HomeBottomContent.Tests.UnitTest1.Test_ArticleController_With_ CでSitecoreItem():\ DEV \タワーズワトソン\ DEVメンテナンス\ソース\フィーチャー\ \ HomeBottomContent UnitTest1.cs \テスト\:ライン76

内部例外1: InvalidOperationExceptionが:型「Sitecore.Nexusをインスタンス化できませんでした。 Licensing.NexusLicenseApi、Sitecore.Nexus '

答えて

1

Sitecore.Nexusアセンブリは、Sitecore WebサイトのBinフォルダにあります。テストプロジェクトからこのアセンブリへの参照を追加します。

+0

このような目的でNugetを使用する方がよい –

1

Sitecore.nexusへの参照が必要です。Visual Studioで

をDLL:ツール - >オプション

オプション]ウィンドウの検索] Nugetパッケージマネージャを ' - > 'パッケージソース' enter image description here

その後、緑色のプラスをクリックし、名前とソース・テキストフィールドを埋めます。

名前1 - 任意の名前を付けてください。ちょうど選択右上の隅の「パッケージのソース」ドロップダウンで... を>ツール - > Nugetパッケージマネージャ - に行くソリューションのためのNugetパッケージの管理その後

https://sitecore.myget.org/F/sc-packages/api/v3/index.json」で

ソース・テキスト・フィールドを埋めますソースを追加してください。私の場合は「Sitecore」です。検索フィールドタイプ「Sitecore.Nexus.Noreferences」は:

enter image description here

あなたがパッケージをインストールし、[インストール]ボタンをクリックするプロジェクトを選択してください。

関連する問題