Expect
Esta página foi traduzida por PageTurner AI (beta). Não é oficialmente endossada pelo projeto. Encontrou um erro? Reportar problema →
Ao escrever testes, você frequentemente precisa verificar se valores atendem a determinadas condições. O expect fornece acesso a diversos "matchers" que permitem validar diferentes aspectos.
Para matchers adicionais do Jest mantidos pela comunidade, confira jest-extended.
Esta página foi traduzida por PageTurner AI (beta). Não é oficialmente endossada pelo projeto. Encontrou um erro? Reportar problema →
Os exemplos em TypeScript desta página só funcionarão conforme documentado se você importar explicitamente as APIs do Jest:
import {expect, jest, test} from '@jest/globals';
Consulte o guia Primeiros Passos para detalhes sobre como configurar o Jest com TypeScript.
Referência
- Expect
- Modificadores
- Comparadores
.toBe(value).toHaveBeenCalled().toHaveBeenCalledTimes(number).toHaveBeenCalledWith(arg1, arg2, ...).toHaveBeenLastCalledWith(arg1, arg2, ...).toHaveBeenNthCalledWith(nthCall, arg1, arg2, ....).toHaveReturnedTimes(number).toHaveReturnedWith(value).toHaveLastReturnedWith(value).toHaveNthReturnedWith(nthCall, value).toHaveLength(number).toHaveProperty(keyPath, value?).toBeCloseTo(number, numDigits?).toBeDefined().toBeFalsy().toBeGreaterThan(number | bigint).toBeGreaterThanOrEqual(number | bigint).toBeLessThan(number | bigint).toBeLessThanOrEqual(number | bigint).toBeInstanceOf(Class).toBeNull().toBeTruthy().toBeUndefined().toBeNaN().toContain(item).toContainEqual(item).toEqual(value).toMatch(regexp | string).toMatchObject(object).toMatchSnapshot(propertyMatchers?, hint?).toMatchInlineSnapshot(propertyMatchers?, inlineSnapshot).toStrictEqual(value).toThrow(error?).toThrowErrorMatchingSnapshot(hint?).toThrowErrorMatchingInlineSnapshot(inlineSnapshot)
- Matchers Assimétricos
expect.anything()expect.any(constructor)expect.arrayContaining(array)expect.not.arrayContaining(array)expect.closeTo(number, numDigits?)expect.objectContaining(object)expect.not.objectContaining(object)expect.stringContaining(string)expect.not.stringContaining(string)expect.stringMatching(string | regexp)expect.not.stringMatching(string | regexp)
- Contagem de Asserções
- Utilitários de Extensão
Expect
expect(value)
A função expect é usada sempre que você deseja testar um valor. Raramente você chamará expect isoladamente. Em vez disso, você usará expect combinado com uma função "matcher" para verificar algo sobre um valor.
É mais fácil entender com um exemplo. Suponha que você tenha um método bestLaCroixFlavor() que deve retornar a string 'grapefruit'. Veja como testar isso:
test('the best flavor is grapefruit', () => {
expect(bestLaCroixFlavor()).toBe('grapefruit');
});
Neste caso, toBe é a função matcher. Existem diversos matchers diferentes, documentados abaixo, para ajudar a testar vários aspectos.
O argumento para expect deve ser o valor produzido pelo seu código, e qualquer argumento para o matcher deve ser o valor correto. Se você inverter essa ordem, os testes ainda funcionarão, mas as mensagens de erro em testes falhos parecerão estranhas.
Modificadores
.not
Se você sabe testar algo, .not permite testar seu oposto. Por exemplo, este código verifica que o melhor sabor da La Croix não é coco:
test('the best flavor is not coconut', () => {
expect(bestLaCroixFlavor()).not.toBe('coconut');
});
.resolves
Use resolves para extrair o valor de uma promise resolvida, permitindo encadear outros matchers. Se a promise for rejeitada, a asserção falha.
Por exemplo, este código testa se a promise é resolvida e se o valor resultante é 'lemon':
test('resolves to lemon', () => {
// make sure to add a return statement
return expect(Promise.resolve('lemon')).resolves.toBe('lemon');
});
Como você ainda está testando promises, o teste permanece assíncrono. Portanto, será necessário informar ao Jest para aguardar retornando a asserção extraída.
Alternativamente, você pode usar async/await combinado com .resolves:
test('resolves to lemon', async () => {
await expect(Promise.resolve('lemon')).resolves.toBe('lemon');
await expect(Promise.resolve('lemon')).resolves.not.toBe('octopus');
});
.rejects
Use .rejects para extrair o motivo de uma promise rejeitada, permitindo encadear outros matchers. Se a promise for resolvida, a asserção falha.
Por exemplo, este código testa se a promise é rejeitada com o motivo 'octopus':
test('rejects to octopus', () => {
// make sure to add a return statement
return expect(Promise.reject(new Error('octopus'))).rejects.toThrow(
'octopus',
);
});
Como você ainda está testando promises, o teste permanece assíncrono. Portanto, será necessário informar ao Jest para aguardar retornando a asserção extraída.
Alternativamente, você pode usar async/await combinado com .rejects.
test('rejects to octopus', async () => {
await expect(Promise.reject(new Error('octopus'))).rejects.toThrow('octopus');
});