Как EF4 + Ninject + Moq? - PullRequest
       32

Как EF4 + Ninject + Moq?

2 голосов
/ 10 марта 2012

Я использую Entity Framework 4, Ninject и Moq в своих проектах.Когда я добираюсь до уровня моих классов обслуживания, где используется EF4, я создаю экземпляр контекста данных - это плохо.

Я хочу внедрить контекст данных в мои сервисы, чтобы мои модульные тесты могли работать с фиктивными даннымиконтекст.Я делал это раньше с nHibernate, но я не могу понять это с EF4, и я не могу найти надежный пример в Интернете.

Может кто-нибудь указать мне на рабочее решение и примеры?Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 10 марта 2012

Рекомендуется использовать базу данных в памяти для тестирования (с использованием SQLite), аналогично методике тестирования NHibernate, описанной в NHibernate 3.0 cookbook .

также посмотрите здесь для описания создания поддельного DbContext.

0 голосов
/ 08 февраля 2016

В моей компании мы используем локальную базу данных разработки с TransactionScope для отката изменений.Уникальным побочным эффектом является повышение идентичности при тестировании вставок, но это не проблема.

Преимущество заключается в том, что у вас есть реальный тест для базы данных.

Если вам нужно отправить электронную почтупочты или отправьте данные на другой сервер, затем вернитесь в IoC с внедрением зависимостей, используя ninject / moq.

Вам потребуется добавить Entity Framework и строку подключения в ваш тестовый проект.

[TestClass]
public class NameValueTest
{
    [TestMethod]
    public void Create()
    {
        NameValueController controller = new NameValueController();

        using (var ts = new TransactionScope())
        {
            Assert.IsNotNull(controller.Create(new Models.NameValue()
            {
                name1 = "1",
                name2 = "2",
                name3 = "3",
                name4 = "4"
            }));

            //no complete, automatically abort
            //ts.Complete();
        }
    }
}

Надеюсь, это поможет вам.

...