Модульное тестирование MVC 3 и Entity Framework - PullRequest
2 голосов
/ 12 сентября 2011

Я изучаю Microsoft, встроенную в модульное тестирование в VS2010, и столкнулся с проблемой.

[TestClass]
public class HomeControllerTest
{

    [TestMethod]
    public void SomeTest()
    {
        //Arrange
        HomeController controller = new HomeController();


        //Act
        ViewResult results = controller.Index() as ViewResult;

        //Assert
        ViewDataDictionary viewData = results.ViewData;

        Assert.AreEqual(null, viewData["Message"]);

    }
}

Я знаю, что это не удастся, это не проблема.Однако проблема заключается в том, что я нажимаю на мою модель EntityFramework "myModel.edmx" и получаю сообщение об ошибке "System.ArgumentException: The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid."

Это находится в файле MyModel.Designer.cs.Обсуждаемая строка:

public Tool_Entities() : base("name=Tool_Entities", "Tool_Entities") { this.ContextOptions.LazyLoadingEnabled = true; OnContextCreated(); } Я знаю, что с этой строкой все в порядке, так как, когда я запускаю не тестовый проект, я могу нормально подключиться к этой модели.

1 Ответ

3 голосов
/ 12 сентября 2011

Вы должны абстрагировать EF от ваших контроллеров сервис-ориентированным или репозиториевым способом.Таким образом, вы можете удалить зависимость (и ввести макет) для своих модульных тестов и просто протестировать свои контроллеры.

Сначала создайте интерфейс.Это всего лишь план, вы можете сделать его так, как хотите.

public interface IToolRepository
{
   void Add(Tool something);
   IQueryable<Tool> Query { get; }
   void Delete(Tool something);
}

Затем реализовать это с EF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...