Я могу заставить его работать, но я хочу знать, что такое лучшая практика и почему. У меня есть контроллер, модель и репозиторий, и теперь я хочу, чтобы модуль тестировал контроллер. Я просто пишу простой тест, чтобы убедиться, что верное представление возвращается.Блок тестирования контроллера - как обрабатывать строку соединения?
Это мой метод в контроллере:
public ActionResult Selections(SelectionsViewModel model)
{
for (int i = 0; i < model.Sends.Count; i++)
{
Send send = new Send(new SendService(new Database().GetConnectionString()))
{
SendID = model.Sends[i].SendID,
Title = model.Sends[i].Title,
Subject = model.Sends[i].Subject,
SentDate = model.Sends[i].SentDate,
TimesViewed = model.Sends[i].TimesViewed,
Include = model.Sends[i].Include,
Exclude = model.Sends[i].Exclude
};
send.UpdateIncludeExclude();
}
return View(model);
}
Вот мой метод GetConnectionString() в классе базы данных, которые отправляются через мой конструктор SendService.
public string GetConnectionString()
{
return System.Configuration.ConfigurationManager.ConnectionStrings["DEVConnectionString"].ToString();
}
И, наконец, мой блок тест:
[Test]
public void TestAssignmentSelections()
{
var obj = new AssignmentController();
var actResult = obj.Selections() as ViewResult;
NUnit.Framework.Assert.That(actResult.ViewName, Is.EqualTo("Selections"));
}
Теперь, мой блок тест не пройден, и я понимаю, почему. Мой проект модульного тестирования не имеет доступа к web.config проекта, который я тестирую, где находится моя строка подключения.
Я провел некоторое исследование, и, по-видимому, просто добавив web.config в свой проект модульного тестирования и установив там строку соединения, это сделает его работу .. но это похоже на взлома.
Каков наилучший способ сделать это? Есть ли другой способ написать мой код для размещения?
Это было полезно, я думаю, у меня есть некоторые изменения. Спасибо. – halterdev