如何在Jest测试中导入JSON文件?

时间:2017-10-10 21:21:47

标签: javascript jestjs

我正在使用<p id="demo"></p> <br> <br> <br> <p id="demo2"></p> 测试我的应用程序,但它收到的错误如下:

Jest

该行发生的错误是:

SyntaxError: Unexpected token }

如何在Jest测试中导入import { something } from "../my-json.json"; 文件?

7 个答案:

答案 0 :(得分:9)

如此处所述:is there a require for json in node.js,您可以使用:

import someObject from ('./somefile.json')

这也应该起作用:

const testObject = require('../config/object');

但是,当我使用jest进行测试时,我通过使用.js扩展名保存json并使用module.exports将其保存在其中来使其工作。然后,我在主文件中解构了该对象。

  • JSON文件(object.js):

    module.exports = {
      "testObject":
      {
          "name": testName
          "surname": testSurname
      }
    }
    
  • 主文件

    const { testObject } = require('./config/object');
    

答案 1 :(得分:0)

您需要import json from 'filename.json'。确保使用路径别名时,需要在jest.config.js配置中的ModuleNameMapper文件中进行配置。

答案 2 :(得分:0)

{{1}}

答案 3 :(得分:0)

const myJSON = require('./json_file_name.json')

请注意,myJSON已经是一个对象,无需使用JSON.parse

答案 4 :(得分:0)

使用TypescriptVue CLI时,我要做的就是将resolveJsonModule添加到tsconfig.ts

// tsconfig.ts

{
  "compilerOptions": {
    "resolveJsonModule": true,
  }
}

实际上,这通常可以解决Typescript加载JSON文件的问题。

注意:我正在使用Vue CLI,因此可能已经在其中预先配置了一些与JSON相关的配置。

答案 5 :(得分:0)

适用于 Typescript / ts-jest 26.5 :

import * as myJson from './mock/MyJson.json';

...

const result = doAnyting(myJson);

答案 6 :(得分:-2)

使用babel-jest插件来转换代码中Node.js无法本机运行的部分。

可以找到更多相关信息in the Jest docs

  

使用Babel

     

要使用Babel,请安装babel-jestregenerator-runtime软件包:

npm install --save-dev babel-jest regenerator-runtime
     

注意:如果您使用npm 3或4或Yarn

,则不需要明确安装regenerator-runtime      

不要忘记在项目的根文件夹中添加.babelrc文件。例如,如果您正在使用带有babel-preset-es2015和babel-preset-react预设的ES6和React.js:

{
   "presets": ["es2015", "react"]
}