Javascript 测试带有服务的React redux组件';带有React测试库的s实例

Javascript 测试带有服务的React redux组件';带有React测试库的s实例,javascript,reactjs,react-testing-library,Javascript,Reactjs,React Testing Library,我有一个组件,它从我的Redux商店获得90%的道具。 它的实例上有一个服务,负责获取、解析和缓存PDF 我过去在Ezyme中所做的是模拟服务,因为我不想在测试中进行这些调用,因为我单独测试我的服务。所以我只是检查是否调用了该服务上的正确方法 我可以和原型混合一点,在我的组件安装中实现同样的效果。然而,在我的更新中唯一能触发动作的是我的redux道具 componentDidUpdate(prevProps) { const { pageNumbersToShow, answersT

我有一个组件,它从我的Redux商店获得90%的道具。 它的实例上有一个服务,负责获取、解析和缓存PDF

我过去在Ezyme中所做的是模拟服务,因为我不想在测试中进行这些调用,因为我单独测试我的服务。所以我只是检查是否调用了该服务上的正确方法

我可以和原型混合一点,在我的组件安装中实现同样的效果。然而,在我的更新中唯一能触发动作的是我的redux道具

  componentDidUpdate(prevProps) {
    const { pageNumbersToShow, answersToShow } = this.props; // All from redux
    const { pageNumbersToShow: prevPages, answersToShow: prevAnswers } = prevProps;

    const navigationOccurred = pageNumbersToShow !== prevPages;
    const answerVisibilityChanged = answersToShow.some((value, index) => value !== prevAnswers[index])
      || prevAnswers.some((value, index) => value !== answersToShow[index]);

    this.setPages(navigationOccurred, answerVisibilityChanged);
  }
setPages执行以下操作,并将此新状态赋予基础组件

setPages(bookChanged, answersChanged) {
    const promises = [];

    promises.push(bookChanged ? this.getPages() : Promise.resolve());
    promises.push(answersChanged ? this.getAnswerPages() : Promise.resolve());

    Promise.all(promises)
      .then(([bookPages, answerPages]) => {
        const newState = {};

        if (bookPages) newState.bookPages = bookPages;
        if (answerPages) newState.answerPages = answerPages;

        if (isLastUpdate()) {
          this.setState(newState);
        }
      })
      .catch(err => {
        this.setState({ err });
      });
  }

因此,我最终要检查的是,底层组件是否使用我在模拟服务中返回的新状态调用