Skip to content

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

@andaraGui

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions