substack 的磁带测试模块允许您使用plan
方法提前指定断言的数量,然后它会自动为您调用end
。为什么不把 end
放在测试的最后呢?使用 plan
和 end
有什么区别?
最佳答案
The first example on the readme显示了 plan
有效但 end
无效的情况 - 异步测试解决方案。在这种情况下,您没有明确说明何时测试应该全部解决,您是说有多少应该最终解决:
test('timing test', function (t) {
t.plan(2);
t.equal(typeof Date.now, 'function');
var start = Date.now();
setTimeout(function () {
t.equal(Date.now() - start, 100);
}, 100);
});
如果我们使用end
,编写这个测试的直观方式如下:
test('timing test', function (t) {
t.equal(typeof Date.now, 'function');
var start = Date.now();
setTimeout(function () {
t.equal(Date.now() - start, 100);
}, 100);
t.end();
});
...但这会在第二个断言有机会运行之前结束测试。
您可以将其进一步推断到需要执行异步或动态代码的任何类型的情况。
关于javascript - 在子堆栈/磁带中使用 "plan"与 "end"的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33333986/