私は学習を始めています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);
})
})
この警告を解決するために何をする必要がありますか?パッケージをすべて最新バージョンに更新しました。
これは、v15.5用にまだ更新されていない酵素のshallow
レンダリング関数を使用しているためだと思います(ただし、 プルリクエスト があります)。
他のレンダリング関数( render
または mount
)のいずれかを使用することもできますが、これによりテストのセマンティクスが変更されます(そして、まだ警告を生成する場合としない場合があります)。
他のオプションは、酵素を使用せずに react-test-renderer/shallow
自分 、ただし、酵素APIはコンポーネントのテストに非常に適しています。
私のアドバイスは、酵素のバージョンを待って、今のところ警告とともに生きることです。
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
2017年8月更新
react-test-renderer
をインストールすると機能しますが、すべてのreact-*
バージョンが一致する必要があります。
例えば.[email protected]
[email protected]
[email protected]
[email protected]
私の環境では、この設定のみが機能しました!
上記の手順を試しても、次の警告が表示されます。
警告: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');