使用Jest和Enzyme编写测试用例

时间:2018-11-20 10:08:48

标签: reactjs jestjs enzyme

我正在为项目编写测试用例。我正在为我的容器编写测试。容器具有如下功能:

getContactDetails = (reqObject) => {
    app.outageCenterService.getContact(reqObject).then(
      response => {
        app.logger.getLogger().info('Below is the response...');
        app.logger.getLogger().info(this.state.contactDetails);
        this.setState({contactDetails: response.contactDetails},()=>{});
        if (this.state.contactDetails.isContactPresent) {
          this.setState({ isVisible: true });
        } else {
          this.setState({ isVisible: false });
        }
      },
      reject => {
        app.logger.getLogger().info(reject);
      }
    );
  }

运行测试时,在函数中,行app.outageCenterService.getContact(reqObject)抛出错误,提示TypeError: Cannot read property 'getContact' of undefined。我了解它是因为outageCenterService是全局定义的,并且玩笑/酶无法找到它。但是我不知道如何解决这个问题。

我的测试看起来像这样:

  describe('test the OutageAlert Component', () => {
    let outageAlert, errorHandlerFn;
    errorHandlerFn=jest.fn();
    getContactFn=jest.fn();
    outageAlert = shallow(<OutageAlertComponent errorHandler={errorHandlerFn} getContact={getContactFn} />);
  });

任何人都可以帮助我解决这种情况下的测试用例吗?

1 个答案:

答案 0 :(得分:0)

您可以考虑使用globals配置

http://facebook.github.io/jest/docs/api.html#globals-object或创建文件并

并在全球范围内为您创建一个模拟笑话,然后您就可以从测试中访问它了。

或者,您可以让容器接受联系人的参数

getContactDetails = (reqObject, contact) => { ...}

因此您可以在测试中以及使用容器的任何地方通过它。

相关问题