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

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

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

最佳答案

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/

相关文章:

testing - 如何使用线程对 Sharepoint 站点执行压力测试

python - 排除 coverage 中的 'else' 子句

javascript - 有没有更优雅的 "fake"类继承方式?

javascript - 防止将数据保存到 localStorage,直到所有输入均已填满

javascript - 将元素设置为 Canvas 中所有图层的顶部

javascript - fs.readdirSync 的奇怪行为

Javascript 函数在 IE 浏览器中不起作用

node.js - 如何为所有 Node/快速路由添加前缀

javascript - Node.js 服务器 : Image Upload/Corruption Issues

python - 如何判断 python 脚本是在终端中运行还是通过 GUI 运行?