関連する部分を見つけるために何時間もコードを読みたくないのですが、ジャスミンがどのように時計を実装しているかに興味があります。興味深い点は、同期テスト コードを使用して非同期コードをテストできることです。私の知る限り、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);
は、コールバックにある必要があります。