bugfix> reactjs > 投稿

Escapeのキー入力に反応するReactアプリケーションがあります。 これはアプリケーションのコードです。

componentDidMount(){
        document.addEventListener("keydown", this.escFunction.bind(this), false);
    }

テストコードでは、次のステートメントを記述します。

wrapper.find('document').simulate('keyDown', {keyCode: 27});

エラーが発生しました:


Method “simulate” is only meant to be run on a single node. 0 found instead.

私も試しました:

wrapper.simulate('keyDown', {keyCode: 27});

そして、アプリケーションはクリックを逃れても反応しなかったようです。

回答 1 件
  • このエラーが発生していますメソッド「シミュレート」は、単一のノードでのみ実行されることを意図しています。代わりに0が見つかりました。 コンテナが見つからないことを意味します。

    最初にこれをチェックして、ノードを取得していることを確認する必要があります。

    const container = wrapper.find(".class_name");
    expect(container.length).to.equal(1);
    
    

    または、これはおそらく非同期にロードしているため、ノードを取得できません。それから、試してみてくださいsetTimeout ノードを取得する関数。

    setTimeout関数内でこれを呼び出します:

    container.simulate('keydown', {key: 'Escape', keyCode: 27, which: 27});
    
    

    これが役立つかもしれません。

あなたの答え