【发布时间】:2023-03-21 09:39:01
【问题描述】:
我目前正在使用 APM 1.6.0、Node 0.10.40 和 Jasmine 1.3 为 Atom 包编写异步规范。不幸的是,我无法让setTimeout 工作。
由于 Jasmine 1.3 使用顺序 runs-blocks 来允许异步测试,我试图从文档中理解示例。
事实证明,setTimeout-callback 从未被调用过。
在寻找可能发生这种情况的原因时,我将setTimeout-statement 重命名为setInterval(因为两个函数具有相同的签名)。
如果我执行以下代码
describe('an asynchronous test', () => {
it('should do some async stuff', () => {
runs(() => {
setInterval(() => {
console.info('async');
}, 75);
setTimeout(() => {
console.info('async2');
}, 75);
});
waitsFor(() => {
return false;
}, 'missing events'); // will wait ~5 seconds.
});
});
我得到以下输出:
async
async
async
...
为什么setInterval-function 工作正常,而setTimeout 完全不工作?
编辑:问题的第一个版本没有提到规范是在 Atom 环境中运行的。请原谅。
【问题讨论】:
-
Works for me(也在节点上)
-
setTimeout仅在 75 毫秒后执行一次。您是否可能只是缺少输出?它将位于控制台的顶部。也许尝试将时间设置为更高的数字? -
一些测试框架要求你以某种方式识别异步测试,你确定你为 Jasmine 正确地做到了这一点吗?
-
对不起,我错过了添加对 Atom 环境的引用。整个测试等待约 5 秒。我肯定不会错过任何活动。
-
@T.J.Crowder 测试不起作用,因为没有调用超时。 Jasmine 1.3 需要满足在 waitsFor 语句中设置的依赖项。
标签: javascript node.js atom-editor