在子堆栈/磁带中使用"plan"与"end"的目的是什么?



substack的磁带测试模块允许您使用plan方法提前指定断言的数量,然后它将自动为您调用end。为什么不把end放在测试的最后呢?使用planend有什么区别?

自述文件中的第一个示例显示了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();
});

…但是这会在第二个断言有机会运行之前结束测试。

相关内容

  • 没有找到相关文章

最新更新