我有以下上下文提供程序组件(我正在使用上下文 api)
示例代码:
export class AppProvider extends Component {
contructor (props) {
super(props);
}
fetchOrder () {
// http request
return Promise.all(promises).then(result => console.log(result));
}
updateOrder (id) {
// ...
this.fetchOrder(id).then(result => this.setState(result));
}
render () {
return (
<emailContext.Provider
value={{
state: this.state,
updateOrder: this.updateOrder
}}
>
{this.props.children}
</emailContext.Provider>
);
}
}
我写了一个测试updateOrder
,但我需要模拟fetchOrder
http请求被调用updateOrder
。
我想我可以像这样嘲笑它:jest.spyOn(AppProvider, 'fetchOrder').mockResolvedValue('fake value');
但这给出了:Cannot spy the fetchOrder property because it is not a function; undefined given instead
如果我把updateOrder
而不是fetchOrder
.
为什么会这样?如果这不是这样做的方法,我将如何在测试中拦截该请求?
在fetchOrder
不是上的属性AppProvider
,但在其它的情况下的特性的方法(属性)。您必须模拟实例上的方法,虽然这是可行的,但最好使用请求拦截器模拟端点本身。这将使您从外部世界测试实例,而不必完全与其实现耦合。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句