Издевательство над EF DBContext с помощью Moq C#C#

Место общения программистов C#
Ответить
Anonymous
 Издевательство над EF DBContext с помощью Moq C#

Сообщение Anonymous »

Я пытаюсь смоделировать контекст БД для использования при тестировании с NUnit. Я продолжаю получать либо

OneTimeSetUp: System.ArgumentException: невозможно создать экземпляр прокси
класса: Tracker.Models.TrackerContext.TrackerContext.

Или

OneTimeSetUp: Moq.MockException : ImisContext.TrackerOrderBridges =
InternalDbSet не удалось выполнить вызов с макетом
поведения Strict. Все вызовы макета должны иметь
соответствующую настройку.

Я знаю, что с TrackerContext все в порядке, поскольку я использую его одинаково В другом тестовом классе просто отсутствует контекст iMIS в контроллере. TrackerContext создается первым способом с помощью iConfig. В то время как контекст iMIS использует каркас, поэтому base:options и т. д.
Когда я использую MockBehaviour.Strict, он выдает вторую ошибку. Без него отображается первый, но, опять же, я знаю, что с TrackerContext все в порядке. Без использования нового раздела Inquiry Controller тест также не завершится неудачно, только когда к нему обращаются там.

Код: Выделить всё

public EnquiryControllerTests()
{
_mockTrackerContext = new Mock(Mock.Of());
_mockiMISContext = new Mock(new DbContextOptions());
_mockActiveDirectoryHelper = new Mock(Mock.Of());
_mockEmailHelper = new Mock();

_enquiryController = new EnquiryController(
_mockiMISContext.Object,
_mockTrackerContext.Object,
_mockActiveDirectoryHelper.Object,
_mockEmailHelper.Object
);
}
Перепробовал все разные способы получить варианты в контексте. Но я не уверен, какая ошибка означает, что я приближаюсь, а какая в начале.
РЕДАКТИРОВАТЬ
Попробовал с несколькими другие контроллеры и они работали. Выяснилось, что проблема на самом деле связана с настройкой EmailHelper Mock.

Подробнее здесь: https://stackoverflow.com/questions/792 ... oq-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»