Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何测试已定义catch方法的承诺?_Javascript_Es6 Promise - Fatal编程技术网

Javascript 如何测试已定义catch方法的承诺?

Javascript 如何测试已定义catch方法的承诺?,javascript,es6-promise,Javascript,Es6 Promise,我有一个返回承诺的方法 doStuf(){ 还债 .然后(…) .catch(e=>{…}) } 我想编写一个测试,确保doStuff方法返回的承诺有一个catch方法 如何做到这一点?这不是一个有用的测试。考虑 doStuf可以被重构为更多层的东西,其中有几个然后 >代码> catch >代码>链可能存在,或者实现将以其他方式改变。 实际上,您并不想测试实现,因为您可以简单地查看它,看看承诺是否有一个catch。否,您要测试doStuf的行为。您希望断言doStuf返回一个承诺,并且该承诺返

我有一个返回承诺的方法

doStuf(){
还债
.然后(…)
.catch(e=>{…})
}
我想编写一个测试,确保
doStuff
方法返回的承诺有一个catch方法


如何做到这一点?

这不是一个有用的测试。考虑<代码> doStuf可以被重构为更多层的东西,其中有几个<代码>然后 >代码> catch >代码>链可能存在,或者实现将以其他方式改变。 实际上,您并不想测试实现,因为您可以简单地查看它,看看承诺是否有一个
catch
。否,您要测试
doStuf
的行为。您希望断言
doStuf
返回一个承诺,并且该承诺返回给定特定输入的预期值。例如:

doStuf('foo').then(r => /* assert r equals expected outcome */)
doStuf('bar').catch(r => /* assert r equals expected error */)

这不是一个真正有用的测试。您要测试的是承诺在发生错误时的行为。它是以错误结束,还是返回有用的值?单元测试的规则是,您想要测试行为,而不是实现?可能是监视方法调用。但为什么要测试呢?