2017-07-19 86 views
0

我試圖用new針對嘲笑功能時嘲笑返回值:在嘲笑功能使用`new`用玩笑

const myMock = jest.fn(); 
myMock.mockReturnValueOnce('some_string'); 
const result = new myMock(); 

的問題是,new myMock()回報{}(空物體),而不是我指定的返回值。

我查看了文檔,但找不到不同的函數來使用。有沒有不同的功能,我可以使用新的使用結果?

回答

0

似乎沒有任何方法可以直接用Jest API來模擬new myMock()的結果。

相反,我最終做的是將它封裝在一個函數中並傳遞參數。我還必須確保最終的值是一個對象(這是一個JavaScript的東西)。

它弄成這個樣子:

const mockedValue = { d: 'DUMMY' }; 
const mock = jest.fn().mockReturnValueOnce(mockedValue); 
const myMock = (a, b) => mock(a, b); // a, b are parameters. Use more or less as needed 
const result = new myMock(); // { d: 'DUMMY' } 

包裝函數僅僅是一個正常的功能,但是當它被稱爲與new,我能夠作爲新的價值,而不是返回我mock結果。我傳遞參數,以確保.toBeCalledWith()按預期工作。