модульное тестирование веб-API - PullRequest
0 голосов
/ 16 мая 2019

В настоящее время у нас есть веб-API (.Net core 2.1), в него встроена служба, которую он вызывает. служба основана на интерфейсе, методы службы выполняют бизнес-логику и работают CRUD.

Мы используем Entity Framework для связи с БД, используя шаблон UnitOfWork, который Сервисы используют в своих методах. Как мы проверяем эти звонки, не нажимая на БД? Я вижу структуру Moq, но я не уверен, как она избегает вызовов БД? Чтобы создать мой контроллер, мне нужно передать мой сервис, конструктор которого принимает unitofwork, через инъекцию зависимостей .net.

Я не уверен, как имитировать часть данных. Будет ли Moq автоматически делать это, или мне нужно настроить поддельные данные, и тогда Moq будет использовать это для моих вызовов в БД? например, если я хочу проверить, возвращает ли запрос GET данные. или сообщение возвращается Ok.

1 Ответ

1 голос
/ 16 мая 2019

Если вы используете инъекцию зависимостей, вы бы высмеивали объект, который вы вводите, и вы имитировали это с помощью Moq (я предполагаю, что вы внедряете тот, который фактически соединяется с БД).

По сути, вы сообщаете Moq, как должен вызываться метод (вы устанавливаете его) и что он должен возвращать.Затем, когда ваша бизнес-логика пытается использовать этот метод из этого смоделированного объекта, фактически ваш смоделированный объект отвечает на вызов, а не дб.

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

Но опять же, я предполагаю, что вы вводите объект, который фактически выполняет вызов.Я думаю, что все объекты, которые вы вводите, должны быть смоделированы, так как вы проверяете объект, получающий инъекции, а не инъецированные ...

Чтобы Moq был действительно полезен, убедитесь, что все, что является внешнимЗависимость имеет свой собственный класс, и вы внедряете его, просто чтобы сделать ваш код легко тестируемым.

...