reactjs - 在异步 componentDidMount 时使用 React 的 Jest 和 Enzyme 进行测试

标签 reactjs typescript jestjs enzyme

  • react :16.3.0-alpha.1
  • 开 Jest :“22.3.0”
  • enzyme :3.3.0
  • typescript :2.7.1

代码:

class Foo extends React.PureComponent<undefined,undefined>{
   bar:number;
   async componentDidMount() {
     this.bar = 0;
     let echarts = await import('echarts'); // async import
     this.bar = 100;
   }
}

测试:

describe('...', () => {
  test('...', async () => {
    const wrapper = shallow(<Foo/>);
    const instance = await wrapper.instance();
    expect(instance.bar).toBe(100);
  });
});

错误:

Expected value to be:
  100
Received:
  0

最佳答案

解决方法:

1:使用异步/等待语法。

2:使用mount(不浅)

3:WAITING异步组件生命周期。

例如:

    test(' ',async () => {
      const wrapper = mount(
         <Foo />
      );
      await wrapper.instance().componentDidMount();
    })

关于reactjs - 在异步 componentDidMount 时使用 React 的 Jest 和 Enzyme 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49419961/

相关文章:

reactjs - React 应用程序中 Firebase 的正确 Typescript 类型

javascript - Array.concat() 返回一个空数组

javascript - require(browserify)在分配(空对象)时无法正常工作,但在内联时可以正常工作

reactjs - 我的数据测试 ID 在那里,但我的测试找不到它 react enzyme Jest 单元测试

javascript - 后台页面中声明的全局函数不会通过 evaluateHandle 调用

reactjs - <Switch> 内特定路由的上下文提供者

javascript - Angular CLI(ng --version)命令错误 TS 和 WebPack

javascript - React 和 Prettier/eslint 应用程序循环运行脚本

typescript - Angular cli 构建版本控制 Json 文件

javascript - 属性的单元测试失败,只能在单个节点上运行?