簡體   English   中英

mocking api 調用與 jest spyOn 不工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM