Skip to content

Testes de erro passariam caso caso a função não jogasse o erro. #83

Description

@andaraGui

Discussed in #82

Originally posted by andaraGui August 2, 2024
Hoje os teses de erro do pacote estão no seguinte modelo:

it('should throw ZendeskRequestError error on fail', async () => {
    mockZendeskClient.request.mockRejectedValueOnce({
      status: 400,
      responseJSON: { message: 'Request failed' }
    });

    const auth = new BearerAuthZendesk({
      zafClient: mockZendeskClient,
      baseUrl: 'http://localhost',
      endpoint: '/auth',
      bearer: {
        headers: {
          Authorization: 'Basic 123'
        }
      }
    });
    try {
      await auth.getToken();
    } catch (error) {
      expect(error.message).toEqual('Request failed');
    }
  });

Como mencionado pelo @gabrielh-silvestre nesse PR, realizar o teste utilizando o bloco try/catch pode ocasionar que o teste de cenário não valide o erro, caso não haja o mesmo.

Utilizando o cenário acima, caso a função auth.getToken() não retorne um erro, o teste irá passar da mesma maneira, sendo que o intuito do mesmo é justamente testar um cenário em que se espera que dê erro.

A sujestão de refatoração segue o seguinte modelo:

it('should throw ZendeskRequestError error on fail', async () => {
    mockZendeskClient.request.mockRejectedValueOnce({
      status: 400,
      responseJSON: { message: 'Request failed' }
    });

    const auth = new BearerAuthZendesk({
      zafClient: mockZendeskClient,
      baseUrl: 'http://localhost',
      endpoint: '/auth',
      bearer: {
        headers: {
          Authorization: 'Basic 123'
        }
      }
    });
  
     await expect(auth.getToken()).rejects.toEqual({
        message: 'Request failed',
        status: 400
     });
  });

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions