#unit-testing #mstest #moles #pex-and-moles
#модульное тестирование #mstest #родинки #pex-и-родинки
Вопрос:
Если HostType как родинки, то я не могу получить данные через ConfigurationManager.AppSettings
У меня все работало нормально 2-3 месяца назад. Но это не сработало, и все мои тестовые примеры завершились неудачно (возникло исключение нулевой ссылки).
Пожалуйста, помогите мне исправить. Спасибо.
Ответ №1:
Это известная ошибка в текущих версиях Moles в .Net 4.0 — вы можете использовать Configuration Manager и заставить его возвращать нужные вам значения в качестве обходного пути.
В качестве примера, вот как я настраиваю тест для Linq To SQL DataContext, чтобы получить покрытие кода для конструктора по умолчанию без подключения к SQL.
[TestInitialize]
[HostType("Moles")]
public void Setup()
{
MCodesConfigurationHelper.DataAccessSettingsGet = () =>
{
MCodesDataAccessSettings setting = new MCodesDataAccessSettings();
setting.DatabaseConnectionStringGet = () => { return "this is a connection string."; };
return setting;
};
MConfigurationManager.ConnectionStringsGet = () =>
{
MConnectionStringSettingsCollection strings = new MConnectionStringSettingsCollection();
strings.ItemGetString = (string connectionString) =>
{
var cstring = new MConnectionStringSettings();
cstring.ToString = () => { return connectionString; };
cstring.ConnectionStringGet = () => { return connectionString; };
return cstring;
};
return strings;
};
MDataContext.ConstructorString = (DataContext dataContext, string connection) => { };
}
[TestMethod]
[HostType("Moles")]
public void DefaultConstructorTest()
{
using (MyDataContext target = new MyDataContext())
{
Assert.IsNotNull(target);
}
}
Комментарии:
1. Спасибо за ваш ответ. Я согласен с вашей точкой зрения, что после обновления родинок с академической до последней версии 4.0 только у меня возникла проблема с конфигурацией. Но мне нужно получить доступ к app.config для базы данных и ключу настройки приложения для доступа ко многим методам. Поэтому, пожалуйста, обновите, если есть какое-либо решение или исправление для этого.