Автофиксаторы и как их использовать - PullRequest
0 голосов
/ 07 января 2019

В настоящее время я работаю с юнит-тестированием с использованием автофиксаторов.

У меня есть этот класс СМИ

, который я хочу создать со случайными значениями, мне сказали, что это можно сделать с помощью автофиксаторов -

Итак, я попытался использовать его открытый конструктор, а именно Media (MediaData mediaData),

как таковой:

                MediaItem anonymousData = fixture.CreateAnonymous<MediaItem>();
                Media media = new Media(new MediaData(anonymousData));

Проблема в том, что этот подпункт -> media.MediaData.MediaItem.InnerItem; не устанавливается.

Затем я снова попытался понизить уровень: поскольку MediaData имеет открытый конструктор public MediaData(MediaItem [mediaItem][3]), который я мог бы использовать вместо этого, поэтому я попробовал это

            MediaItem anonymousData = fixture.CreateAnonymous<MediaItem>();
            Media media = new Media(new MediaData(anonymousData));

но это дает ошибку: Сообщение: System.InvalidOperationException: Не удалось найти узел конфигурации: database / database [@ id = 'databaseName2df4ec17-4d66-41bf-aa2f-75ed1ddd266a']

Я просто пытаюсь сгенерировать действительный элемент Media, media.MediaData.MediaItem.InnerItem;

Как сделать, используя автокрепление, не спускаясь по кроличьей норе?

1 Ответ

0 голосов
/ 20 марта 2019

Источником большинства наблюдаемых вами проблем является очень широкий Item API, реализованный Sitecore. Я бы порекомендовал вам взглянуть на библиотеку Sitecore.NSubstituteUtils , которая значительно упрощает подделку предметов. После этого вы можете настроить свой прибор для генерации экземпляров Item и Database с использованием библиотеки:

fixture.Inject(FakeUtil.FakeDatabase());
fixture.Register((Database db) => new FakeItem(database: db));
fixture.Register((FakeItem fakeItem) => fakeItem.ToSitecoreItem());

Это должно сработать.

В качестве бонуса вы также получите удобный интерфейс для настройки различных аспектов элемента (таких как поля, шаблоны, презентация и т. Д.).

...