我如何在 Spectron 中“等待”关闭 window?

How can I `await` closing of window in Spectron?

我正在开发 Electron 应用程序,它以模式 windows 处理一些逻辑。 那些 windows 正在等待异步操作解决,然后自行关闭。现在我正在努力使用 Spectron 和 Jest 来测试这种行为:似乎没有方法可以捕获 window 的关闭然后继续进行另一个测试。

目前我的密码是

it('doing its job', async () => {
  // awaits and expects that aren't related

  await app.client.click('button[data-role="close"]');
  await new Promise(r => setTimeout(r, 1000));
  expect(await client.getWindowCount()).toBe(1);
});

它有效,但我发现它非常反模式。我想知道是否有任何方法可以做类似

的事情
it('doing its job', async () => {
  // awaits and expects that aren't related

  await app.client.click('button[data-role="close"]');
  await app.client.waitUntilWindowCloses(windowIndex);
  expect(await client.getWindowCount()).toBe(1);
});

感谢任何帮助。

await app.client.waitUntil(async () => (await app.client.getWindowCount()) === 1);