Javascript 测试带有服务的React redux组件';带有React测试库的s实例
我有一个组件,它从我的Redux商店获得90%的道具。 它的实例上有一个服务,负责获取、解析和缓存PDF 我过去在Ezyme中所做的是模拟服务,因为我不想在测试中进行这些调用,因为我单独测试我的服务。所以我只是检查是否调用了该服务上的正确方法 我可以和原型混合一点,在我的组件安装中实现同样的效果。然而,在我的更新中唯一能触发动作的是我的redux道具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
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 });
});
}
因此,我最终要检查的是,底层组件是否使用我在模拟服务中返回的新状态调用