如何测试承诺是否定义了 catch 方法?
How to test a promise has a catch method defined?
我有一个方法returns一个承诺。
doStuf() {
return somePromise
.then(...)
.catch(e => {...})
}
我想编写一个测试来确保 doStuff
方法返回的承诺有一个 catch 方法。
怎么做?
那不是测试有用的东西。考虑到 doStuf
稍后可能会重构为更多层次的东西,其中可能存在多个 then
-catch
链,或者实现将以其他方式改变。
您实际上并不想测试实现,因为您可以简单地查看它以查看 promise 是否具有catch
。不,您想测试 doStuf
的 行为 。你想断言 doStuf
returns 一个承诺,并且那个承诺 returns 给定特定输入的期望值。例如:
doStuf('foo').then(r => /* assert r equals expected outcome */)
doStuf('bar').catch(r => /* assert r equals expected error */)
我有一个方法returns一个承诺。
doStuf() {
return somePromise
.then(...)
.catch(e => {...})
}
我想编写一个测试来确保 doStuff
方法返回的承诺有一个 catch 方法。
怎么做?
那不是测试有用的东西。考虑到 doStuf
稍后可能会重构为更多层次的东西,其中可能存在多个 then
-catch
链,或者实现将以其他方式改变。
您实际上并不想测试实现,因为您可以简单地查看它以查看 promise 是否具有catch
。不,您想测试 doStuf
的 行为 。你想断言 doStuf
returns 一个承诺,并且那个承诺 returns 给定特定输入的期望值。例如:
doStuf('foo').then(r => /* assert r equals expected outcome */)
doStuf('bar').catch(r => /* assert r equals expected error */)