簡體   English   中英

我如何在開玩笑的模擬功能內返回模擬?

[英]How do I return mocks within a mock function in jest?

我正在嘗試模擬axios.create()函數,該函數以較少的方法返回axios的實例。 我想通過使用每個方法返回一個對象來模擬此create()方法,但是我也希望使用jest.fn()模擬這些方法,因此我嘗試了類似的方法

axiosInst = {
    get: jest.fn(),
    post: jest.fn(),
    ...
}
axios.create = jest.fn(() => axiosInst)

但是,當我運行測試代碼時,它無法正常工作,但出現此TypeError: Cannot read property post of undefined

在我的代碼中, axiosInst.post() ,因此出於某種原因, axios.create()返回的是undefined ,這絕對沒有意義。

我也困惑,我到底如何設置mockReturnValueaxiosInst 在運行測試之前,在實例上為方法設置返回值的確切語法是什么?

嘗試像下面這樣模擬任何模擬函數的返回值:

axios.create = jest.fn().mockReturnValue({
  get: jest.fn(),
  set: jest.fn()
});

此外,您還可以設置一個解決的承諾作為回報價值get這里,因為我們可能需要在測試案例,測試成功/失敗的情況,如下圖所示:

  const mockPromise = new Promise(resolve => resolve(
    { /** some mock data here */ })
  );

  axios.create = jest.fn().mockReturnValue({
    get: mockPromise,
    set: jest.fn()
  });
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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