2017-05-04 71 views
0

我正在爲我的應用程序編寫測試,但在嘗試模擬異步獲取功能時遇到問題。無論我嘗試什麼,我得到:嘗試模擬Jest中的異步獲取功能時出現錯誤規範

asyncFetch.mockReturnValue is not a function 

這使我相信該功能沒有被嘲笑。但是,我不知道問題出在哪裏。

這是測試:

import emailSignin from 'api/emailSignin'; 
 

 
jest.mock('api/helpers/asyncFetch'); 
 

 
describe('API Auth',() => { 
 
    describe('login',() => { 
 
    it('has a happy path', async() => { 
 
     const asyncFetch = require('api/helpers/asyncFetch').default; 
 

 
     asyncFetch.mockReturnValue({ 
 
     json:() => 'it worked', 
 
     }); 
 

 
     const response = await emailSignin('bob', 'password'); 
 
     expect(response).toEqual('it worked'); 
 
    }); 
 
    }); 
 
});

這是我試圖模擬模塊:

import { 
 
    ClientError, 
 
    ServerError, 
 
    ValidationError, 
 
} from 'api/helpers/errors'; 
 

 
async function asyncFetch(url, requestConfig = {}) { 
 
    const response = await fetch(url, requestConfig); 
 
    const responseBody = await response.json(); 
 
    const { statusText, status } = response; 
 

 
    switch (status) { 
 
    case 400: 
 
    case 401: 
 
    case 403: 
 
     throw new ClientError(statusText, status); 
 
    case 422: 
 
     throw new ValidationError(statusText, status, responseBody.errors); 
 
    case 500: 
 
    case 501: 
 
    case 502: 
 
    case 503: 
 
    case 504: 
 
    case 505: 
 
     throw new ServerError(statusText, status); 
 
    default: 
 
     return response; 
 
    } 
 
} 
 

 
export default asyncFetch;

任何幫助竟被d非常感謝!

回答

0

嘲笑的模塊開玩笑,你可以做這樣的初始mock電話:

jest.mock('api/helpers/asyncFetch',()=>({ 
    json:() => 'it worked' 
})) 
+0

感謝您的答覆!這是我已經嘗試但沒有任何結果的事情之一。我得到另一個錯誤 'TypeError:(0,_asyncFetch2.default)不是一個函數',當我嘗試控制檯日誌時,它說'undefined'。 –

+0

您能否將模塊的代碼添加到您的問題中。 –

+0

我在帖子中加入了 –