![](/img/trans.png)
[英]Unit testing async/await javascript with mocha and chai
[英]Testing async method with mocha and chai
嗨,大家好,我很难通过读取内部服务器来测试异步功能。 我正在按照承诺的方式使用摩卡咖啡。 失败的测试是:“返回专有名称”我想我将不得不模拟fetch调用之类的东西,或者问题可能是我在调用异步函数,并且在执行单元测试时不要兑现诺言。 我不太确定如何实现这一目标。 你可以帮帮我吗?
要测试的功能是:
import React from 'react'
import Technologies from './Technologies'
import fetch from '../../core/fetch'
let title= 'Technologies'
export default {
path: '/technologies',
async action () {
const resp = await fetch('/graphql', {
method: 'post',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
query: '{technologies{name,icon,url}}',
}),
credentials: 'include',
})
let { data, } = await resp.json()
if (!data || !data.technologies) throw new Error('Failed to load technologies.')
return {
title:title,
component: <Technologies title={title} technologies={data.technologies} />,
}
},
}
我的测试:
describe('Route', () => {
it('has right path', () => {
expect(Route.path === '/technologies').to.be.true
})
it('return proper title', () => {
const title = 'Technologies'
expect(Route.action().title === title).to.be.true
})
})
尝试:
describe('Route', () => {
it('has right path', () => {
return expect(Route.path === '/technologies').to.be.true
})
it('return proper title', () => {
const title = 'Technologies'
return expect(Route.action().title === title).to.be.true
})
})
Mocha文档中建议的第一个策略是使用“完成”回调。 这是it中回调的一个额外参数。 您在测试中的最后一个断言之后调用它。
例如,对于您的测试,您忘记了返回Expect中的函数:
describe('Route', () => {
it('has right path', (done) => {
return expect(Route.path === '/technologies').to.be.true
done();
})
it('return proper title', (done) => {
const title = 'Technologies'
return expect(Route.action().title === title).to.be.true
done();
})
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.