typescript - Fırlatılan herhangi bir hatada jest testini başarısız yapmak?


Herhangi bir hata atıldığında jest testini nasıl başarısız kılabilirim?

Biraz denedim ama henüz sözdizimini çözemedim.

test('getArcId => Error', async () => {
    await expect(client.getArcId('skynet')).rejects.toThrow();
});

Hata mesajını alıyorum

getArcId › getArcId => Hata

expect(alınan).rejects.toThrow()

Alınan fonksiyon hata vermedi

Ancak aşağıdaki test geçiyor, bu yüzden test etmeyi amaçladığım fonksiyon gerçekten fırlatıyor (en azından fırlatmanın ne anlama geldiği konusundaki anlayışıma göre):

test('getArcId => Error', async () => {
    await client.getArcId('skynet').catch(e => 
        expect(e.message).toBe('Command failure')
    );
});

Cevap #1

toThrow() işlevini çalıştıramadım, ama testleri şöyle yapmak işe yaradı;

it('throws on connection error', async () => {
    expect.assertions(1);
    await expect(nc.exec({ logger: true }))
    .rejects.toEqual(Error('No command provided to proxy.'));
});

Sadece bir mesajı reddedersem;

.rejects.toEqual('some message');

Cevap #2

Jest istisna yönetiminin beklendiği gibi çalışması için, ona şu şekilde anonim bir fonksiyon geçirin:

test('getArcId => Error', async () => {
    await expect(() => client.getArcId('skynet')).rejects.toThrow();
});

Jest belgelerinden

test('throws on octopus', () => {
  expect(() => {
    drinkFlavor('octopus');
  }).toThrow();
});

Lütfen anonim fonksiyona dikkat edin. Evet, bu beni birkaç kez yakaladı :)

İlgili makaleler