测试诺言是否已被拒绝?

时间:2019-07-09 09:19:52

标签: jestjs

我似乎有很多示例,这些示例如何测试是否由于某些原因而拒绝了承诺,如下所示:

 it('should reject if no startdate is given', () => {
   expect.assertions(1);
   return expect(MyService.fetch()).rejects.toEqual({
     error: 'Your code message',
   });
 });          

但是如果我只是想测试一个承诺是否被拒绝,该怎么写。

2 个答案:

答案 0 :(得分:0)

尝试使用.toBeDefined()代替.toEqual(...)

编辑:
您还可以使用.toThrow(),这是JEST实际上推荐的方法
正如我稍后发现的,您需要使用async / await对此进行测试 这是有关如何对其进行测试的示例:

  it('should test promise reject', async () => {
    await expect(toReject(true)).rejects.toThrow()
  });

Test the code here

答案 1 :(得分:0)

  1. 如果您希望诺言被拒绝,请使用.rejects

    test('should reject if no startdate is given', () => {
      return expect(MyService.fetch()).rejects.toMatch('error');
    });
    
  2. 您可以将异步和等待与.resolves.rejects结合使用。

    test('should reject if no startdate is given', async () => {
       await expect(MyService.fetch()).rejects.toThrow('error');
    });