我不想花几个小时阅读代码来找到相关部分,但我很好奇 jasmine 如何实现它的时钟。它的有趣之处在于它可以使用同步测试代码来测试异步代码。AFAIK,使用当前支持 ES5 的 node.js,这是不可能的(异步函数在 ES7 中定义)。它是否使用 estraverse 之类的东西解析 js 代码并从同步代码构建异步测试?
只是我所说的一个例子:
it("can test async code with sync testing code", function () {
jasmine.clock().install();
var i = 0;
var asyncIncrease = function () {
setTimeout(function () {
++i;
}, 1);
};
expect(i).toBe(0);
asyncIncrease();
expect(i).toBe(0);
jasmine.clock().tick(2);
expect(i).toBe(1);
jasmine.clock().uninstall();
});
在这里expect(i).toBe(1);
应该在回调中。