Юнит-тесты Umbraco проваливаются

Я пытаюсь следовать предложению Хорхе Лусара по модульному тестированию Umbraco. Мне не удалось заставить метод GetRoutingContext работать, потому что конструктор Umbraco.Web.Routing.UrlProvider получает исключение нулевой ссылки (ранее я загрузил установку umbraco 7.0.4 и скомпилировал Umbraco.Tests.dll).

Когда у меня заканчивались варианты, я решил скачать свежую копию Umbraco, скомпилировать и запустить тест, который бы выполнял конструктор UrlProvider. К моему удивлению, я также получил исключение с нулевой ссылкой, поэтому, очевидно, эта ошибка не имеет ничего общего с моим решением, а вместо этого с Umbraco.

Изображения говорят сами за себя. Может ли кто-нибудь помочь с этим? Это действительно ошибка или я могу что-то сделать здесь?

Исключение нулевой ссылки в конструкторе UrlProvider

Отсутствуют настройки конфигурации Umbraco?


person Fabio Milheiro    schedule 26.03.2014    source источник


Ответы (2)


Решение проблемы заключалось в том, чтобы скопировать настройки конфигурации (те, что в проекте UnitTests решения Umbraco) в мой тестовый проект.

Umbraco зависит от файлов конфигурации. Не идеально для модульных тестов, но это сработало.

Здесь объясняется как заглушить зависимости Umbraco.

person Fabio Milheiro    schedule 09.07.2014

Проверяя web.config для текущего сайта v7, над которым я работал, раздел umbracoConfiguration/settings имеет тип Umbraco.Core.Configuration.UmbracoSettings.UmbracoSettingsSection.

Еще одна вещь, которую вы делаете неправильно, - это использование as IUmbracoSettingsSection. Это означает, что если приведение не удается, вы возвращаете нулевой объект, а не исключение, сообщающее вам, что приведение не удалось - оно молча терпит неудачу. Лучше сделать:

var umbracoSettings = (IUmbracoSettingsSection)ConfigurationManager.GetSection("umbracoConfiguration/settings");

Как уже упоминалось, я думаю, что ваш базовый тип неверен, и вам действительно следует использовать:

var umbracoSettings = (Umbraco.Core.Configuration.UmbracoSettings.UmbracoSettingsSection)ConfigurationManager.GetSection("umbracoConfiguration/settings");

Это должно привести раздел к правильному типу для вас.

person Jamie Howarth    schedule 09.07.2014
comment
Вы неправильно прочитали вопрос, так как я не ошибаюсь в коде, поскольку это источник Umbraco. - person Fabio Milheiro; 09.07.2014
comment
Теперь я вижу - мои извинения! Я думал, вы пытаетесь загрузить свои собственные настройки конфигурации, чтобы проверить их. - person Jamie Howarth; 09.07.2014