如何在Gatsby中对GraphQL查询进行单元测试

如何在Gatsby中对GraphQL查询进行单元测试,graphql,gatsby,Graphql,Gatsby,我用盖茨比和杰斯特来测试。默认情况下,Gatsby处理GraphQL数据获取,从我发现的情况来看,它没有提供任何解决方案来测试单元测试中的GraphQL查询 有办法做到这一点吗?现在我只是模拟查询来测试组件本身,但我希望能够在GraphiQL中测试查询的工作,而无需手动执行 我的代码是这样的: PageContent.jsx 从“道具类型”导入道具类型; 从“React”导入React; const PageContent=({data:{markdownmark:{html}}})=>( {h

我用盖茨比和杰斯特来测试。默认情况下,Gatsby处理GraphQL数据获取,从我发现的情况来看,它没有提供任何解决方案来测试单元测试中的GraphQL查询

有办法做到这一点吗?现在我只是模拟查询来测试组件本身,但我希望能够在GraphiQL中测试查询的工作,而无需手动执行

我的代码是这样的:

PageContent.jsx
从“道具类型”导入道具类型;
从“React”导入React;
const PageContent=({data:{markdownmark:{html}}})=>(
{html}
);
PageContent.propTypes={
数据:PropTypes.shape({
备注:PropTypes.shape({
html:PropTypes.string.isRequired,
}).要求,
}).要求,
};
export const query=graphql`
查询页面内容($id:id!){
markdownmark(frontmatter:{id:$id}){
html
}
}
`;
导出默认页面内容;
PageContent.test.jsx
从“模板/PageContent”导入页面内容;
描述(“,()=>{
let-mounted组件;
让道具;
常量getComponent=()=>{
如果(!mountedComponent){
mountedComponent=浅();
}
返回安装组件;
};
在每个之前(()=>{
mountedComponent=未定义;
道具={
数据:{
备注:{
html:'测试',
},
},
};
});
它(“将a呈现为根元素”,()=>{
expect(getComponent().is('div')).toBeTruthy();
});
它(“呈现`props.data.markdownmark.html`”,()=>{
expect(getComponent().contains(props.data.markdownRemark.html)).toBeTruthy();
});
});
我写了一篇文章。如果安装了它,则可以通过替换模拟数据来检索实际的Graph QL数据

  data: {
        markdownRemark: {
          html: '<div>test</div>',
        },
      }

然后,它将从您最近构建项目时提取数据(使用
gatsby build
gatsby develop

您找到方法了吗?@VladyslavZavalykhatko nope抱歉。我仍然只是在模拟查询关于GraphQL查询,您想测试什么?它仍然是一样的吗?您可以对它进行快照测试,只需查看
查询中的内容。
  data: await getPageQueryData(`/path/to/your/page`)