簡體   English   中英

Javascript / 開玩笑:將 object 移動到外部幫助程序時,以前通過的測試現在失敗

[英]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.length1而不是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.

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