5

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

4

1 回答 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 回答