【发布时间】:2019-09-15 09:32:18
【问题描述】:
我有这个函数,它为 api 调用调用一个 util 函数。 util函数根据api结果解析或拒绝。
现在,我需要对具有以下结构的回调函数进行单元测试。
`theClassMethod : () => {
return utilMethod().then(
result => { this.functionOne() //Test this function is called },
error => { this.functionTwo() //Test this function is called }
)
}`
util 方法返回如下承诺:
utilFunc = (data :string) :Promise<ResultData[]> => {
return new Promise(async (resolve, reject) => {
try{
resolve(data)
}catch{
reject(error)
}
})
}
https://codesandbox.io/s/vjnwy1zw75?fontsize=14
我尝试了什么:
- 模拟 util 方法来解决/拒绝。调用类方法并进行断言。它不起作用,并且测试总是作为误报通过。
我花了很多时间寻找类似的问题。这里的大多数问题都是测试代码,例如:
theClassMethod : () => { utilMethod.then().catch()}
我要解决的问题是在 then 块 then(function1, function2) 中测试解析,拒绝回调。必须测试 function1 中的代码块是否调用了一些预期的函数。
【问题讨论】:
-
你的测试代码是否遵循jest guideline 来测试异步代码?
-
是的,确实如此。勾选
-
你能写出你的测试是什么样子的最小例子吗?
-
codesandbox.io/s/vjnwy1zw75?fontsize=14。 @skyboyer
-
请不要试图阻止重复的问题建议 - 读者无论如何都会提出它们。他们几乎总是乐于助人,对他们敞开心扉是理想的,即使你相信你已经彻底搜索过了。您可能没有看到好的复制品,或者您可能看过但不明白为什么它是复制品。
标签: javascript reactjs unit-testing promise jestjs