は、プレイを呼び出し、一時停止し、私の知識を求めるように、引用文献を必要とし、私はこのパターンを使用して終了しました。
https://medium.com/@planttheidea/never-render-in-react-testing-again-fc4bcfc2f71d
例コンポーネントコード:
export const createComponentWillReceiveProps = instance => ({seekTime, isPlaying, onSeekComplete}) => {
const {paused} = instance.playerRef.getState().player;
if (seekTime) {
instance.playerRef.seek(seekTime);
onSeekComplete();
}
if (isPlaying && paused) {
instance.playerRef.play();
}
if (!isPlaying && !paused) {
instance.playerRef.pause();
}
};
...
componentWillReceiveProps = createComponentWillReceiveProps(this)
...
<VideoReactPlayer ref={el => this.playerRef = el} preload='auto' src={source}>
...
とテストこのように見えた:それはリアクトの最新バージョンで廃止されてあなたは `this.refs`を使用しないでください
it('calls playerRef.play when isPlaying prop is true & paused is true',() => {
const instance = {playerRef: {play: jest.fn(), getState:() => ({player: {paused: true}})}};
const componentWillReceiveProps = createComponentWillReceiveProps(instance);
componentWillReceiveProps({isPlaying: true});
expect(instance.playerRef.play).toBeCalled();
});
。代わりに、コールバックパターンを使用します。詳細情報[here](https://stackoverflow.com/questions/43873511/deprecation-warning-using-this-refs/43873736#43873736)[こちら](https://facebook.github.io/react/docs) /refs-and-thedom.html#legacy-api-string-refs)。 – Chris
@Chrisそれを指摘していただきありがとうございます、私は自分のコードを修正し、私の例を更新します! – Sally