Реагировать на шутки и ферментные тесты. Как правильно передать источник видео в - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу проверить, правильно ли загружал видео компонент "video". Я создал ссылку 'videoStream' для компонента 'video':

<video ref={videoStream} width="100%" preload="auto">
   <source src={this.props.video_source} type={this.props.file_type}/>
</video>

В моем videoPlayer.test. js:

wrapper = mount(<VideoPlayer video_source={"/video_samples/video.mp4"} file_type={"video/mp4"}/>);
describe('Video player', () => {
    it('should correctly load video', async () => {
            jest.useFakeTimers();
            setTimeout(() => {
                expect(wrapper.instance().videoStream.current).toBeDefined();
                expect(wrapper.instance().videoStream.current.duration).toBeGreaterThan(0);
              }, 4500);
            jest.runAllTimers();
        });
    }

/ video_samples / video.mp4 хранится внутри публикации c папка.

При запуске проекта с «npm start» видео загружается правильно и длительность равна 15. Но когда я делаю «npm test», длительность всегда равна 0. Она должна быть больше 0.

Полагаю, проблема с передачей источника в VideoPlayer. Помоги мне с этим.

1 Ответ

0 голосов
/ 15 апреля 2020

JSDom, который Jest использует под капотом, не имитирует все функции браузера. Среди прочего, <video> поддерживается не полностью.

Вы можете расширить VideoHTMLElement вручную для имитации логи c, которые вы хотите проверить.

Или вы можете просто переосмыслить Вы тестируете, чтобы избежать тестирования.

В вашем конкретном случае я считаю, что нет необходимости тестировать это с модульным тестом, вы можете вместо этого включить его для ручного тестирования или тестирования на основе селена.

...