在substack / tape中使用“plan”和“end”的目的是什么?

时间:2015-10-25 19:20:05

标签: javascript node.js testing tdd node.js-tape

substack的磁带测试模块允许您使用plan方法提前指定断言的数量,然后它会自动为您调用end。为什么不在测试结束时放end?使用planend

有什么区别?

1 个答案:

答案 0 :(得分:5)

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();
});

...但是在第二次断言有机会运行之前,这将结束测试。

您可以进一步推断出需要执行异步或动态代码的任何情况。