Moq Убедитесь, что обновление никогда не вызывалось для ядра Entity Framework

#c# #rest #entity-framework-core #moq

Вопрос:

Приведенное ниже не приводит к сбою MockBehavior.Loose ( т. Е. Настройка не требуется )

 void IContentDataStore.Update<T>(T entity)
{
    GetDbSet<T>().Update(entity);
}
 
 [Test]
...
ContentStoreMock.Verify(repo => repo.Update(existingRequest), Times.Never );
 

Для MockBehavior.Strict определенных настроек требуется.

Какой была бы любая настройка, если бы эта проверка вообще имела смысл ? Уже есть expectedStatusCode: HttpStatusCode.BadRequest и определенная Assert.That строка ожидаемого результата.

Комментарии:

1. Не могли бы вы, пожалуйста, поделиться с нами GetDbSet методом и всем тестом?

Ответ №1:

В моем случае даже для MockBehavior.Strict настройки не требовалось, потому что Проверка была чисто для Times.Never ( т. Е. Обновления не произошло )

Соответствующий метод Rest Put возвращает BadRequest, прежде чем делать что-либо еще.

Проверьте себя Update_Should_ReturnBadRequest_When_NameIsInvalid()

Приведенное ниже изменение позволило пройти тест:

 ContentStoreMock.Verify(repo => repo.Update(It.IsAny<MonitoringRequest>()), Times.Never);