【问题标题】:ReactTestUtils has been movedReactTestUtils 已被移动
【发布时间】:2017-09-06 04:36:52
【问题描述】:

我开始学习 React,在做一些测试时,我注意到两条警告消息:

警告:ReactTestUtils 已移至 react-dom/test-utils。更新引用以删除此警告。

警告:浅渲染器已移至 react-test-renderer/shallow。更新引用以删除此警告。

它们不会阻止测试运行或正确验证,但总是会出现此错误。

通过查看文档,我 found this page,即使在我包含他们推荐的那些行之后,警告消息仍然出现。

我正在尝试一个非常简单的测试,这是我的代码:

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);
    })
})

我需要做什么才能解决此警告?我已经将我所有的打包更新到了​​最新版本。

【问题讨论】:

  • chech酶的封装json/源码。他们可能仍在使用旧的

标签: reactjs unit-testing react-test-renderer


【解决方案1】:

如果您使用 React 0.14 或 React

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

如果您使用 React >=15.5,除了酶之外,您还必须确保您还安装了以下 npm 模块(如果尚未安装):

npm i --save-dev react-test-renderer react-dom

【讨论】:

  • 这解决了我的问题
  • 在指定 react-test-renderer 的版本以匹配我的 react 版本后,这对我有用。例如:npm i --save-dev react-test-renderer@15.6.2.
【解决方案2】:

我认为它来自于使用酶的shallow 渲染函数,该函数尚未针对 v15.5 进行更新(尽管有一个 pull request)。

您可以尝试使用其他渲染函数之一(rendermount),但这会改变您的测试的语义(并且可能会或可能不会仍然产生警告)。

您的另一个选择是不使用酶并使用react-test-renderer/shallow yourself,但酶 API 非常适合测试组件。

我的建议是等待酶的版本,现在就忍受警告。

【讨论】:

  • 所以,等到他们修复它可能值得,对吧?因为这只是一个警告,没有任何破坏。
  • 完全。酶拉取请求应该不会花很长时间才能通过。
  • 我用 React v15.1.0 得到这个?如何删除这些警告?
  • @VishalGulati,试试Pere Pages' answer,因为它似乎更适合旧版本的 React。
  • @MichaelPeyper 我已经安装了这些模块,但仍然出现此错误
【解决方案3】:

2017 年 8 月更新

如果您安装react-test-renderer,它会起作用,但所有react-* 版本都应该匹配:

例如
react@15.4.2
react-test-renderer@15.4.2
react-dom@15.4.2
react-addons-test-utils@15.4.2

在我的环境中,只有这个配置有效!

【讨论】:

    【解决方案4】:

    尝试上述步骤后,我仍然收到以下警告。

    警告: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');
    

    【讨论】:

      猜你喜欢
      • 2016-09-04
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      相关资源
      最近更新 更多