2016-01-28 2 views
0

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

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

Если я внедряю сам сервис, это не значит, что я создаю тест интеграции вместо единичного теста?

Я спрашиваю об этом, потому что мои коллеги по работе продолжают писать тесты, которые вводят реальные услуги и все еще называют их модульными тестами. Это затягивает большое время, особенно когда вам приходится отлаживать ошибки от инъецируемых услуг в тестах, и каждая услуга зависит от 5 других услуг ...

+0

По моему опыту, угловые тесты (жасмин/мокка) включают инъекции «реальных» услуг. НО ваши юнит-тесты «заглушат» их поведение с любым желаемым взаимодействием. Вы можете использовать '$ обеспечить', чтобы издеваться над этими зависимостями в целом, но обычно, когда вам нужно несколько вещей, необходимых для службы, ее просто проще вставить реальную вещь и использовать« заглушку », чтобы просто определить поведение вашего теста. Самый большой противник для модульных тестов - это «состояние» внутри службы, и вам нужно как можно меньше поддерживать это внутри службы. – FrailWords

ответ

2

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

Пару месяцев назад я написал article по этой теме. Проверьте это для получения дополнительной информации.

+1

Спасибо. Ваш андер действительно был полезен, и он подтвердил, о чем я думал. Кроме того, действительно классная и интересная статья. –

+0

@ Łukasz спасибо, всегда рады помочь! –

Смежные вопросы