Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Tem erro: Expected null to be 'tokenTest' at SafeSubscriber._next (http://localhost:9876/_karma_webpack_/src/app/core/auth/auth.service.spec.ts:44:59)

import { AuthService } from "./auth.service";
import { HttpClientModule } from "@angular/common/http";
import { UserService } from "../user/user.service";
import { HttpClientTestingModule, HttpTestingController } from "@angular/common/http/testing";
import { TestBed } from "@angular/core/testing";
import { User } from "../user/user";

describe("O service AuthService", () => {
    let service: AuthService;
    let httpMock: HttpTestingController;
    let userService: UserService;
    //test smoke - fumaza
    beforeEach(() => {
        TestBed.configureTestingModule({
            //imports: [HttpClientModule],
            imports: [HttpClientTestingModule],
            providers: [AuthService]
        });
        service = TestBed.get(AuthService);
        httpMock = TestBed.get(HttpTestingController);
        userService = TestBed.get(UserService);
    });

    it("Deve ser instanciado", () => {
        /*
        const http=new HttpClient();
        const userService=new UserService();
         const service = new AuthService();
        */
        expect(service).toBeTruthy();

    });

    it("Deve autenticar o usuario", () => {
        const fakeBody = {
            id: 1,
            name: "Ad",
            email: "adolmit@gmail.com"
        }

        spyOn(userService, "setToken").and.returnValue(null);
        service.authenticate("adolfo", "1234").subscribe(response => {
            expect(response.body).toEqual(fakeBody);
            expect(response.headers.get('x-acess-token')).toBe('tokenTest');
        });

        const httpRequest = httpMock.expectOne((req) => {
            return req.method === "POST"
        });

        httpRequest.flush(fakeBody, {
            headers: { 'x-acess-toke': 'tokenTest' }
        });
    });

});
3 respostas

Fala ai Adolfo, tudo bem? Esse problema pode estar ocorrendo por N motivos, consegue compartilhar o projeto completo comigo? Assim eu consigo simular o problema por aqui e analisá-lo com mais calma.

Pode compartilhar através do Github ou Google Drive (zipado).

Fico no aguardo.

solução!

Oi Matheus, Eu descobri meu erro, eu tinha escrito errado x-acess-toke, tem que ser x-acess-token em:

httpRequest.flush(fakeBody, {
            headers: { 'x-acess-toke': 'tokenTest' }
 });

Pois na validacao eu procuro x-acess-token mais e null por isso saiu isso erro

expect(response.headers.get('x-acess-token')).toBe('tokenTest');

Fala Adolfo, que bom, fico feliz que tenha encontrando o problema.

Sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.