substack 的磁带测试模块允许您使用该方法提前指定断言的数量plan
,然后它会自动end
为您调用。为什么不把end
测试放在最后呢?plan
使用, 和 和有什么区别end
?
问问题
869 次
1 回答
5
自述文件中的第一个示例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();
});
...但这会在第二个断言有机会运行之前结束测试。
您可以将此进一步外推到需要执行异步或动态代码的任何类型的情况。
于 2015-11-09T11:06:17.153 回答