Mic*_*icz 3 javascript jasmine
我一直在使用Jasmine测试和特别是异步测试一段时间,我无法弄清楚它是如何检测它是否应该等待,如果你在测试中使用done(),可能会超时.它工作得非常好,我真的很好奇他们是如何做到的.
我们来看看这个简单的测试.这两个显然有用(BTW,即使没有beforeEach()):
it('Sample test', function () {
expect(true).toBe(true);
});
it('Sample test with done', function (done) {
expect(true).toBe(true);
done();
});
Run Code Online (Sandbox Code Playgroud)
但是,如果我在第二次测试中没有调用done(),它将会超时.
在JS中,他们如何检查你传递给它的函数()是否声明了任何参数?
每个函数都有一个.length属性,它返回它具有的形式参数的数量:
console.log(function (a, b, c) { }.length); // 3
console.log(function () { }.length); // 0Run Code Online (Sandbox Code Playgroud)
看来这是茉莉花来源中的相关位置:
for(iterativeIndex = recursiveIndex; iterativeIndex < length; iterativeIndex++) {
var queueableFn = queueableFns[iterativeIndex];
if (queueableFn.fn.length > 0) {
attemptAsync(queueableFn);
return;
} else {
attemptSync(queueableFn);
}
}
Run Code Online (Sandbox Code Playgroud)
如果.length属性为非零,则将每个测试调用为异步,如果属性为零,则将其称为同步.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |