Eu não entendi tão bem essa questão de ordem. Eu criei o meu spy do userService
que setei o retorno como null
.
Fiz as avaliações e só depois com o httpMock
eu setei que meu header tinha o token 'tokenTest'
.
Eu fui trocar a ordem, porque para mim fazia mais sentido que o resquet tenha sido feito antes de fazer as avalições, para que elas recebam o valor certo, né? Mas deu erro no teste.
Isso deve ter a ver com o fakeAsync()
e o .subscribe()
, certo?
Alguém poderia me explicar essa parte com mais clareza? Agradeço.
Código:
it('deve autentificar o usuario', fakeAsync(() => {
const fakeBody = {
id: 1,
nome: 'Alvaro',
email: 'alvaro@alura.com'
};
const spy = spyOn(userService, 'setToken').and.returnValue(null);
service.authenticate('alvaro', '1234').subscribe(response => {
expect(response.body).toEqual(fakeBody);
expect(spy).toHaveBeenCalledWith('tokenTest');
});
const request = httpMock.expectOne(req => {
return req.method === 'POST'
});
request.flush(fakeBody, {
headers: { 'x-access-token': 'tokenTest' }
});
tick();
}));