Вы заглушаете свой teamMember.addTeamMember
, поэтому его никогда не вызывают.Вы можете проверить это с помощью console.log
утверждений (или просто доверяйте своему инструменту покрытия кода;)
Вы должны заглушить http.post
, чтобы ваш addTeamMember
действительно проверялся.
ИмеяТем не менее, ваш тест не имеет смысла:
- Вы передаете наблюдаемую функцию вашей функции, когда она ожидает объект
- Вы притворяетесь, что ваш метод возвращает объект вместонаблюдаемое
Возможное решение
it('creates a new member', () => {
const data = {
name: 'Rodolfo Lenin',
lastName: 'xxxx xxxx',
rol: 'Front-End',
gender: 'male'
};
spyOn(httpService, 'post').and.returnValue(of(data));
teamService.addTeamMember(data).subscribe((responseData) => {
expect(responseData).toEqual(data);
});
});
Обратите внимание, что вам следует написать еще один тест для случая, когда ваша служба возвращает ноль.Однако возвращение нулевого значения, поскольку были переданы недопустимые параметры, обычно считается антишаблоном.См. Возвращает ли ноль плохой дизайн?
Кроме того, есть другой подход, предложенный Angular https://angular.io/guide/http#testing-http-requests
И вот забавный разговор о проверке параметров https://blogs.msdn.microsoft.com/oldnewthing/20091210-00/?p=15713