如何解决使用 mocha 和 chai 单元测试 async/await javascript
大家好,我目前正在研究这个异步函数并为此编写单元测试,但它不起作用它说 AssertionError: expected undefined to equal 'Everytime I think of coding,I am happy'
这是我的函数代码:
async function funcFour() {// async automatically returns a promise
let result = new Promise((resolve) => {// returns a new promise named result
setTimeout(() => {
resolve(`Everytime I think of coding,I am happy`);//resolve happens after three seconds
},1500)
});
const response = await result;//closing resolve of new promise
console.log(response);//console.logging response of new promise
} funcFour();
这是我的单元测试:
describe("flirtFour()",() => {
it("Should return Everytime I think of coding,I am happy",async function () {
return flirtFour().then(result => {
expect(result).to.equal("Everytime I think of coding,I am happy")
})
})
})
这是我第一次编写单元测试,我正在尝试使用 async func 来完成它,所以我是新手。我真的很想看看这是怎么做的,所以提前致谢:)
解决方法
尽管您在上面给出了 funcFour()
并尝试在下面测试 flirtFour()
,但我假设它们是相同的。现在 flirtFour()
目前没有返回任何内容。您需要从该函数返回 response
。默认情况下,返回值为 undefined
。另请记住,您从 async
函数返回的任何内容都会被包装到 Promise 本身中。所以你实际上是在像这样返回一个 Promise :-
return Promise.resolve(undefined)
。
如果你只是简单地返回 response
,它会自动被视为
return Promise.resolve(response)
这可能正是您所需要的。
因此将您的 funcFour()
更改为以下内容:-
async function funcFour() {// async automatically returns a promise
let result = new Promise((resolve) => {// returns a new promise named result
setTimeout(() => {
resolve(`Everytime I think of coding,I am happy`);//resolve happens after three seconds
},1500)
});
const response = await result;
return response;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。