Я использую Linq to SQL в моем проекте. У меня есть часть кода, которая вызывает
DataContext db = new DataContext()
Это работает, как и ожидалось, при запуске веб-сайта, однако при вызове этого из моего модульного теста я получаю объект ошибки, не установленный в экземпляр ...
Вы знаете, почему это так?
Я знаю, что мне следует смоделировать контекст данных для тестирования, но есть только два теста, использующих это, которые мне нужно завершить для этой стадии проекта. Тогда я пойду и высмею.
Я просто не понимаю, почему это не работает.
Edit:
В моем контроллере у меня есть строка
CandidateRegistrationViewModel viewModel = new CandidateRegistrationViewModel("PersonalDetails", candidate);
Модель имеет член db:
public class CandidateRegistrationViewModel
{
private EmployDirectDataContext db = new EmployDirectDataContext();
Этот класс затем использует db для заполнения полей выбора.
Все работает, когда я запускаю, но в модульном тесте я получаю сообщение об ошибке при создании текста данных.
[TestMethod]
public void PersonalDetailsStepPostShouldRedisplayIfDOBSuppliedInWrongFormat()
{
// Arange
var controller = CreateCandidateController("Dean");
repository.Add(FakeCandidateData.CreateCandidate(controller.member.UserId()));
FormCollection formCollection = FakeCandidateData.CreatePersonalDetailsStepFormCollection();
formCollection["DOB"] = "24/2009/87"; //DOB in wrong format - should be dd/mm/yyyy
controller.ValueProvider = formCollection.ToValueProvider();
// Act
ViewResult result = (ViewResult)controller.PersonalDetailsStep(formCollection);
// Assert
Assert.AreEqual("", result.ViewName); //ViewName is returned as empty if same as Action name
}
Оба проекта имеют одинаковую строку подключения в app / web.config
<add name="EmployDirectDBConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\EmployedDirectDB.MDF;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />