web-dev-qa-db-ja.com

ReactTestUtilsが移動されました

私は学習を始めていますReactと私はいくつかのテストをしている間に2つの警告メッセージに気づきました:

警告:ReactTestUtilsはreact-dom/test-utilsに移動されました。参照を更新して、この警告を削除してください。

警告:浅いレンダラーはreact-test-renderer/shallowに移動されました。参照を更新して、この警告を削除してください。

テストの実行や適切な検証を妨げませんが、常にこのエラーが発生します。

ドキュメントを見ると、私は このページを見つけました に、推奨する行を含めた後でも、警告メッセージが表示されています。

私は最初に非常に簡単なテストを試みています、これは私のコードです:

import React from "react";
import toJson from "enzyme-to-json";
import { shallow } from "enzyme";
import { About } from "./About";

describe('Rendering test', () => {
    const component = shallow(<About />);
    const tree      = toJson(component);

    it('Should render the About component', () => {
        expect(tree).toMatchSnapshot();
    })

    it('Should not contain an h2 element', () => {
        expect( component.contains('h2') ).toBe(false);
    })
})

この警告を解決するために何をする必要がありますか?パッケージをすべて最新バージョンに更新しました。

20
celsomtrindade

これは、v15.5用にまだ更新されていない酵素のshallowレンダリング関数を使用しているためだと思います(ただし、 プルリクエスト があります)。

他のレンダリング関数( render または mount )のいずれかを使用することもできますが、これによりテストのセマンティクスが変更されます(そして、まだ警告を生成する場合としない場合があります)。

他のオプションは、酵素を使用せずに react-test-renderer/shallow自分 、ただし、酵素APIはコンポーネントのテストに非常に適しています。

私のアドバイスは、酵素のバージョンを待って、今のところ警告とともに生きることです。

16
Michael Peyper

React 0.14またはReact <15.5、酵素に加えて、次のnpmモジュールもインストールされていることを確認する必要があります。まだではありませんでした:

npm i --save-dev react-addons-test-utils react-dom

酵素に加えてReact> = 15.5を使用している場合は、次のnpmモジュールがインストールされていない場合もインストールする必要があります。

npm i --save-dev react-test-renderer react-dom
21
Pere Pages

2017年8月更新

react-test-rendererをインストールすると機能しますが、すべてのreact-*バージョンが一致する必要があります。

例えば.
[email protected]
[email protected]
[email protected]
[email protected]

私の環境では、この設定のみが機能しました!

1
Yuri Ramos

上記の手順を試しても、次の警告が表示されます。

警告:ReactTestUtilsはreact-dom/test-utilsに移動されました。参照を更新して、この警告を削除してください。

\ node_modules\react-addons-test-utils\index.jsのパスを更新すると、これが解決しました。

古い:

lowPriorityWarning(
  false,
  'ReactTestUtils has been moved to react-dom/test-utils. ' +
    'Update references to remove this warning.'
);

module.exports = require('react-dom/lib/ReactTestUtils');

新着:

lowPriorityWarning(
  false,
  'ReactTestUtils has been moved to react-dom/test-utils. ' +
    'Update references to remove this warning.'
);

module.exports = require('react-dom/test-utils');
0
Gareth