如何在 Jest 测试中处理 .gql 文件导入

jvp*_*nte 1 apollo jestjs graphql vue-apollo graphql-tag

我正在尝试测试导入.gql文件的组件。当我尝试在 Jest 文件中构建组件时,我收到此错误:

( object. anonymous function(module exports require __dirname __filename global jest) {
query getUser {                                                
      ˆˆˆˆˆˆˆ
<script>
import GET_USER from 'PATH';
ˆ
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何忽略导入?因为我不需要测试 GraphQL 调用。

Dan*_*den 8

GraphQL文件(通常有一个.gql扩展名)可以,如果你使用的WebPack并使用自带的加载器直接输入graphql-tag。Jest 不适用于开箱即用的 webpack,需要进行配置以处理任何资产文件(如样式表、图像等)的导入。文档中概述此过程。

根据graphql-tag文档:

不支持 Webpack 的测试环境需要额外配置。对于 Jest,请使用 jest-transform-graphql。

因此,您可以将jest-transform-graphqlbabel-jest您可能已经在使用的插件一起使用:

"jest": {
  "transform": {
    "\\.(gql|graphql)$": "jest-transform-graphql",
    ".*": "babel-jest"
  }
}
Run Code Online (Sandbox Code Playgroud)

通过添加moduleNameMapper文档中所示的配置选项在技术上可以模拟文件,但是,这样做可能会破坏您的组件。

  • 我在我的“nuxt”项目上遇到了这个问题,按照上面添加“jest-transform-graphql”并添加“moduleFileExtensions: ['js', 'vue', 'json', 'gql'],”后错误消失了。 (3认同)