Jestjs 测试承诺是否被拒绝?

Jestjs 测试承诺是否被拒绝?,jestjs,Jestjs,我举了很多例子来测试一个承诺是否因为某种原因而被拒绝,如下所示: it('should reject if no startdate is given', () => { expect.assertions(1); return expect(MyService.fetch()).rejects.toEqual({ error: 'Your code message', }); }); 但是,如果我只是想测试一个承诺是否被拒绝,而不管原

我举了很多例子来测试一个承诺是否因为某种原因而被拒绝,如下所示:

 it('should reject if no startdate is given', () => {
   expect.assertions(1);
   return expect(MyService.fetch()).rejects.toEqual({
     error: 'Your code message',
   });
 });          
但是,如果我只是想测试一个承诺是否被拒绝,而不管原因是什么,我该怎么写呢。

尝试使用.toBeDefined而不是.toEqual

编辑: 您还可以使用.toThrow,JEST实际推荐的方法 正如我后来发现的,您需要使用async/await来测试这个 下面是一个关于如何使用它们进行测试的示例:

  it('should test promise reject', async () => {
    await expect(toReject(true)).rejects.toThrow()
  });
如果您希望承诺被拒绝,请使用.rejects

您可以将async和wait与.resolves或.rejects组合使用

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