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