Javascript “使用”的目的是什么;“计划”;vs";完";在子堆栈/磁带中?
substack的磁带测试模块允许您使用Javascript “使用”的目的是什么;“计划”;vs";完";在子堆栈/磁带中?,javascript,node.js,testing,tdd,node.js-tape,Javascript,Node.js,Testing,Tdd,Node.js Tape,substack的磁带测试模块允许您使用plan方法提前指定断言的数量,然后它将自动为您调用end。为什么不把end放在测试的末尾呢?使用计划和结束之间有什么区别?显示了计划有效但结束无效的情况-异步测试分辨率。在这种情况下,您并不是明确地说测试应该在什么时候全部解决,而是说最终应该解决多少: 测试(“定时测试”,功能(t){ t、 计划(2); t、 相等(typeof Date.now,“function”); var start=Date.now(); setTimeout(函数(){ t
plan
方法提前指定断言的数量,然后它将自动为您调用end
。为什么不把end
放在测试的末尾呢?使用计划
和结束
之间有什么区别?显示了计划
有效但结束
无效的情况-异步测试分辨率。在这种情况下,您并不是明确地说测试应该在什么时候全部解决,而是说最终应该解决多少:
测试(“定时测试”,功能(t){
t、 计划(2);
t、 相等(typeof Date.now,“function”);
var start=Date.now();
setTimeout(函数(){
t、 相等(Date.now()-start,100);
}, 100);
});
如果我们使用end
,编写此测试的直观方法如下:
测试(“定时测试”,功能(t){
t、 相等(typeof Date.now,“function”);
var start=Date.now();
setTimeout(函数(){
t、 相等(Date.now()-start,100);
}, 100);
t、 end();
});
…但这将在第二个断言有机会运行之前结束测试
您可以将此进一步推断到需要执行异步或动态代码的任何情况。我们不能将
t.end()
放入setTimeout()回调中吗?您可以。事后看来,这不是一个很好的例子——更好的计划演示应该涉及潜在的种族条件,如果一定数量的条件有望解决,但没有一个条件解决方案可以声称对结束测试负责。异步元素是正交的。啊,是的,这很有意义!谢谢你,巴尼。