[英]mocking api call with jest spyOn not working
我有以下上下文提供程序組件(我正在使用上下文 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
編寫測試,但我需要模擬 updateOrder 調用的fetchOrder
updateOrder
請求。
我想我可以像這樣嘲笑它: jest.spyOn(AppProvider, 'fetchOrder').mockResolvedValue('fake value');
但這給出了: Cannot spy the fetchOrder property because it is not a function; undefined given instead
Cannot spy the fetchOrder property because it is not a function; undefined given instead
如果我使用updateOrder
而不是fetchOrder
,我會得到相同的結果。
為什么會這樣? 如果這不是這樣做的方法,我將如何在我的測試中攔截該請求?
fetchOrder
不是AppProvider
上的屬性,而是其實例上的屬性(方法屬性)。 您必須模擬實例上的方法,雖然這會起作用,但最好使用請求攔截器模擬端點本身。 這將使您從外部世界測試實例,而不必完全耦合其實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.