【问题标题】:Enzyme shallow returns undefined for renderless component无渲染组件的酶浅返回未定义
【发布时间】:2018-06-01 04:49:41
【问题描述】:

这是我的js文件

import React, { Component } from 'react';

export default class ProjectStore extends Component {
  static lodingCount = 0;
  constructor(props) {
    super(props);
  }

  static setLodingCount(countValue){
    ProjectStore.lodingCount = countValue;
  }

  static getLodingCount(){
    return ProjectStore.lodingCount;
  }
}

我写了一个测试用例,如下所示:

import React from 'react';
import {shallow} from 'enzyme';
import ProjectStore from '../projectStore.js';

describe('<ProjectStore />', () => {
  it('should return loading count', () => {
    const ProjectStore = shallow(<ProjectStore />);
    ProjectStore.setLodingCount(2);
    expect(ProjectStore.lodingCount).toEqual(2);
  });
});

但是当我执行npm test 时它返回了:

ReferenceError: ProjectStore is not defined

我在这里做错了什么?

【问题讨论】:

    标签: javascript reactjs jestjs enzyme


    【解决方案1】:

    当从一个类测试一个静态方法时,你不需要渲染那个组件。您需要做的就是从该类调用该静态方法,如下所示:

    import React from 'react';
    import Adapter from 'enzyme-adapter-react-16';
    
    import ProjectStore from './projectStore.js';
    
    describe('<ProjectStore />', () => {
      it('should return loading count', () => {
        ProjectStore.setLodingCount(2);
        expect(ProjectStore.lodingCount).toEqual(2);
      });
    });
    

    您可以通过this answer了解更多信息。

    【讨论】:

    • 感谢@konekoya 为我工作。还有一件事你能建议我在这种情况下如何为构造函数方法编写测试用例。
    • @rahul 这最好在一个单独的问题中提出
    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 2018-04-03
    • 2019-03-14
    • 2018-09-25
    • 2020-08-26
    相关资源
    最近更新 更多