【发布时间】:2017-12-29 11:02:19
【问题描述】:
我正在对 apollo 客户端使用 react,并且我正在尝试测试一个需要 graphQL 突变的函数。由于这是函数的单元测试,我不想测试突变。 所以我需要模拟突变。这是我的功能:
changeContent (event) {
const { content } = this.state
const { id, language, changeMutation, t } = this.props
changeMutation({
variables: {
id,
content
},
refetchQueries: [{
query: getContent,
variables: {
id,
language
}
}]
}).then(response => {
this.setState({ content: response.data.changeContent.content })
}).catch(error => {
this.setState({ content })
console.error(error)
toast.error(t('error:content'))
})
}
这就是我开始测试它的方式:
it('changeContent() should call mutation', () => {
// SETUP
const initial = 'Initial value'
const new = 'New value'
wrapper = shallow(<Content
id='123'
language='en'
t={jest.fn()}
changeMutation={jest.fn()}
/>)
wrapper.setState({ content: initial })
// EXECUTE
wrapper.instance().changeContent()
// VERIFY
expect(wrapper.instance().state.content).toEqual(new)
})
但我不明白如何处理then 和catch。
【问题讨论】:
标签: javascript unit-testing jestjs