Javascript 检查超时的方法会引发异常

Javascript 检查超时的方法会引发异常,javascript,jasmine,Javascript,Jasmine,我试着用茉莉花来测试这个方法 connect() { client.connect(); setTimeout(() => { if (client.getState() !== zookeeper.State.SYNC_CONNECTED) { throw new Error(); } }, 1); } 通常,我会通过以下方式测试此方法: it('throws error', function() { expect

我试着用茉莉花来测试这个方法

connect() {
    client.connect();
    setTimeout(() => {
      if (client.getState() !== zookeeper.State.SYNC_CONNECTED) {
        throw new Error();
      }
    }, 1);
}
通常,我会通过以下方式测试此方法:

it('throws error', function() {
    expect(connect).toThrow();
});

我知道
setTimeout
在一个单独的线程中抛出一个错误,因此
toThrow
在这种情况下不起作用。有人知道测试这种方法的其他方法吗?

你不能;您需要更改方法,以便调用者能够发现错误。使用回调或承诺。因为您要在窗口下设置asynchronousmock setTimeout,并在调用test()之前立即执行第一个参数回调