我正在试着用能谱子来写电子测试。
这是我的密码
describe ('Application launch', function(done) {
this.timeout(30000);
const app = new Application({
path: electronBinary,
args: [baseDir],
});
before(() => app.start());
after(() => app.stop());
it('shows an initial window', async () => {
await app.client.waitUntilWindowLoaded();
const count = await app.client.getwindowcount();
assert.equal(count,1);
});
});
但是,当我运行npm test
时,得到的错误是
1) Application launch "before all" hook:
Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
2) Application launch "after all" hook:
Error: Application not running
at Application.stop (node_modules\spectron\lib\application.js:58:48)
at Context.after (test\spec.js:19:19)
我是否需要向现有的钩子添加任何函数?
2条答案
按热度按时间wgx48brx1#
它似乎发生在
before all
方法中。请注意,您的错误显示为1) Application launch "before all" hook:
。在我看来,你的测试函数看起来很好,但是在这个例子代码中我没有看到
beforeAll
,所以我认为可能有两个问题。beforeAll
方法在此代码示例之外的某个地方出现问题。1.这里显示的
before
挂接返回一个非承诺对象。在你的代码中,你使用了lambda函数来完成之前的工作,但是如果
app.start()
返回了一个不是承诺的对象,那么这就是你的问题了。试着像这样重构它:如果您的
app.start()
函数是异步的,您可能需要将done处理程序传递给它:或者可能转换你的
app.start()
函数返回一个promise来解析它。你可能需要添加async () => await app.start()
,但是我不认为这对于像这样的单个表达式是必要的。hs1ihplo2#
你没有在it函数中使用“done”作为回调函数。你也不必在describe回调函数中使用done。另外,由于done()已经使你的代码异步,你不必使用async关键字。我的解决方案是:
希望能有所帮助!