Какова минимальная площадь Nugets для тестов Sitecore FakeDB?

#sitecore #sitecore8

#sitecore #sitecore8

Вопрос:

Я начал со стандартного Sitecore.Kernel и Sitecore.Nexus . Sitecore выдает здесь довольно описательное сообщение об ошибке, поэтому я DependencyInjection также добавил. Это приводит к множеству зависимостей, и они не отображаются в config belo. Как вы можете видеть, я использую *.NoReferences версию пакетов Sitecore для управления зависимостями.

 <packages>
  <package id="Microsoft.Extensions.DependencyInjection" version="1.0.0" targetFramework="net452" />
  <package id="Sitecore.FakeDb" version="1.2.2" targetFramework="net452" />
  <package id="Sitecore.Kernel.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
  <package id="Sitecore.Nexus.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
</packages>
  

После этого я застрял. Я получил сообщение об ошибке, которое не дало большого представления о том, что упущено:

 System.NullReferenceException : Object reference not set to an instance of an object.
    at Sitecore.Configuration.DefaultFactory.CreateType(XmlNode configNode, String[] parameters, Boolean assert)
    at Sitecore.Configuration.DefaultFactory.CreateFromTypeName(XmlNode configNode, String[] parameters, Boolean assert)
    at Sitecore.Configuration.DefaultFactory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper)
    at Sitecore.Configuration.DefaultFactory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert)
    at Sitecore.Configuration.DefaultFactory.CreateObject(String configPath, String[] parameters, Boolean assert)
    at Sitecore.Configuration.DefaultFactory.CreateObject(String configPath, Boolean assert)
    at Sitecore.Configuration.DefaultFactory.GetDatabase(String name, Boolean assert)
    at Sitecore.Configuration.DefaultFactory.GetDatabase(String name)
    at Sitecore.Configuration.Factory.GetDatabase(String name)
    at Sitecore.Data.Database.GetDatabase(String databaseName)
    at Sitecore.FakeDb.Db..ctor(String databaseName)
    at Sitecore.FakeDb.Db..ctor()
    at SitecoreTests.Class1.HowToCreateSimpleItem() in C:progtempSitecoreTestsSitecoreTestsClass1.cs:line 17
  

Итак, чего не хватает, чтобы простой поддельный тест DB работал?

Ответ №1:

После полной проверки всех пакетов, на которые ссылаются как на зависимости Sitecore.Kernel , я закончил с этой настройкой:

 <packages>
  <package id="Lucene.Net" version="3.0.3" targetFramework="net452" />
  <package id="Microsoft.Extensions.DependencyInjection" version="1.0.0" targetFramework="net452" />
  <package id="Sitecore.FakeDb" version="1.2.2" targetFramework="net452" />
  <package id="Sitecore.Kernel.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
  <package id="Sitecore.Logging.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
  <package id="Sitecore.Nexus.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
</packages>
  

Теперь ясно, что Sitecore не может запуститься без Sitecore.Logging .

Lucene.Net также требуется, но ошибка для него гораздо полезнее:

System.IO.FileNotFoundException : не удалось загрузить файл или сборку ‘Lucene.Net, версия = 3.0.3.0, Культура = нейтральная, PublicKeyToken = 85089178b9ac3181’ или одна из его зависимостей. Система не может найти указанный файл.

PS. Если вам не нужны ссылки на дополнительные библиотеки DLL, вы можете добавить только два пакета, чтобы заставить вас тестировать работу — Sitecore.Nexus (без .NoReferences ) и Microsoft.Extensions.DependencyInjection

Ответ №2:

Вот список пакетов, которые я использовал в проекте модульного тестирования Fortis:

 <packages>
  <package id="AutoFixture" version="3.0.1" targetFramework="net452" />
  <package id="Lucene.Net" version="3.0.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.Mvc" version="3.0.50813.1" targetFramework="net452" />
  <package id="Microsoft.AspNet.Razor" version="1.0.20105.408" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebPages" version="1.0.20105.408" targetFramework="net452" />
  <package id="Microsoft.Extensions.DependencyInjection" version="1.0.0" targetFramework="net452" />
  <package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="1.0.0" targetFramework="net452" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net452" />
  <package id="NSubstitute" version="1.10.0.0" targetFramework="net452" />
  <package id="RazorGenerator.Mvc" version="2.4.7" targetFramework="net452" />
  <package id="SharpZipLib" version="0.86.0" targetFramework="net452" />
  <package id="Sitecore.Abstractions.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
  <package id="Sitecore.Analytics.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
  <package id="Sitecore.Buckets.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
  <package id="Sitecore.ContentSearch.Linq.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
  <package id="Sitecore.ContentSearch.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
  <package id="Sitecore.FakeDb" version="1.1.3" targetFramework="net452" />
  <package id="Sitecore.FakeDb.AutoFixture" version="1.1.3" targetFramework="net452" />
  <package id="Sitecore.FakeDb.NSubstitute" version="1.1.3" targetFramework="net452" />
  <package id="Sitecore.FakeDb.Serialization" version="1.1.3" targetFramework="net452" />
  <package id="Sitecore.Kernel.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
  <package id="Sitecore.Logging.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
  <package id="Sitecore.Nexus.NoReferences" version="8.2.160729" targetFramework="net452" developmentDependency="true" />
  <package id="System.Collections" version="4.0.11" targetFramework="net452" />
  <package id="System.Collections.Concurrent" version="4.0.12" targetFramework="net452" />
  <package id="System.ComponentModel" version="4.0.1" targetFramework="net452" />
  <package id="System.Diagnostics.Debug" version="4.0.11" targetFramework="net452" />
  <package id="System.Globalization" version="4.0.11" targetFramework="net452" />
  <package id="System.Linq" version="4.1.0" targetFramework="net452" />
  <package id="System.Linq.Expressions" version="4.1.0" targetFramework="net452" />
  <package id="System.Reflection" version="4.1.0" targetFramework="net452" />
  <package id="System.Resources.ResourceManager" version="4.0.1" targetFramework="net452" />
  <package id="System.Runtime.Extensions" version="4.1.0" targetFramework="net452" />
  <package id="System.Threading" version="4.0.11" targetFramework="net452" />
  <package id="System.Threading.Tasks" version="4.0.11" targetFramework="net452" />
  <package id="WebActivatorEx" version="2.0.3" targetFramework="net452" />
  <package id="xunit" version="2.1.0" targetFramework="net452" />
  <package id="xunit.abstractions" version="2.0.0" targetFramework="net452" />
  <package id="xunit.assert" version="2.1.0" targetFramework="net452" />
  <package id="xunit.core" version="2.1.0" targetFramework="net452" />
  <package id="xunit.extensibility.core" version="2.1.0" targetFramework="net452" />
  <package id="xunit.extensibility.execution" version="2.1.0" targetFramework="net452" />
  <package id="xunit.runner.visualstudio" version="2.1.0" targetFramework="net452" />
</packages>
  

Также убедитесь, что у вас есть настройки /App_Config/Include папки для вашей конфигурации: вот Fortis one