开玩笑地测试是否会因抛出的任何错误而失败?

时间:2019-02-07 10:12:38

标签: typescript jestjs

如果引发任何错误,我如何使玩笑测试失败?

我尝试了一下,但是还没有确定语法。

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

我收到错误消息

  

getArcId› getArcId =>错误

     

期望(已接收).rejects.toThrow()

     

接收的函数未抛出

无论如何,以下测试通过了,所以我打算测试的功能确实抛出了(至少就我对抛出的含义的理解而言):

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

4 个答案:

答案 0 :(得分:0)

要使Jest异常处理按预期工作,请向其传递一个匿名函数,如:

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

jest documentation

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

请注意匿名功能。是的,那让我有几次:)

答案 1 :(得分:0)

我无法toThrow()上班,但是像这样进行测试就可以了;

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

如果我只拒绝一条消息;

.rejects.toEqual('some message');

答案 2 :(得分:0)

Data.Person

答案 3 :(得分:0)

检查函数引发的错误

it('should return error message', () => {
    expect(() => fn().toThrowError(
        new Error('Error Message')
    );
});