[英]Javascript / Jest: test that previously passes now fails when moving object to external helper
我有一個測試,我在 beforeEach 中定義了一個player
beforeEach
。 在我的測試中,在每次jest.advanceTimersByTime(2001)
調用之后, player.seekable.mock.calls
都會增加,所以因為我調用jest.advanceTimersByTime(2001)
兩次,所以player.seekable.mock.calls.length
為 2。
initPlayer.test.js
describe('testing', () => {
let player, seekableEnd;
beforeEach(() => {
seekableEnd = 120;
player = {
currentTime: jest.fn(),
seekable: jest.fn(() => {
return {
end: jest.fn().mockReturnValue(seekableEnd),
};
}),
}
});
it('should keep until the video has a seekable edge', async () => {
seekableEnd = undefined;
player.currentTime.mockReturnValue(10);
await initPlayer();
jest.advanceTimersByTime(2001);
seekableEnd = 100;
jest.advanceTimersByTime(2001);
expect(player.seekable.mock.calls.length).toBe(2);
});
});
我想將player
提取到一個助手中,這樣我就不會在測試中定義它。 我在下面這樣做了,但是當我在測試文件中使用幫助程序時, player.seekable.mock.calls.length
是1
而不是2
,這是直接在測試中定義player
時......我不知道為什么.
播放器.js
export function getPlayer(data) {
player = {
currentTime: jest.fn(),
seekable: jest.fn(() => {
return {
end: jest.fn().mockReturnValue(data.seekableEnd),
};
}),
}
}
export default getPlayer;
initPlayer.test.js
import { getPlayer } from './helpers/player';
describe('testing', () => {
let player, seekableEnd;
beforeEach(() => {
seekableEnd = 120;
const data = { seekableEnd };
player = getPlayer(data);
});
it('should keep until the video has a seekable edge', async () => {
seekableEnd = undefined;
player.currentTime.mockReturnValue(10);
await initPlayer();
jest.advanceTimersByTime(2001);
seekableEnd = 100;
jest.advanceTimersByTime(2001);
expect(player.seekable.mock.calls.length).toBe(2); <---- this is 1 now when using the extracted player helper
});
});
getPlayer
沒有返回播放器 object。 嘗試將其更改為:
export function getPlayer(data) {
return {
currentTime: jest.fn(),
seekable: jest.fn(() => {
return {
end: jest.fn().mockReturnValue(data.seekableEnd),
};
}),
}
}
export default getPlayer;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.