【问题标题】:How to import JSON file on Jest tests?如何在 Jest 测试中导入 JSON 文件?
【发布时间】:2018-03-22 10:07:02
【问题描述】:

我正在使用 Jest 测试我的应用程序,但出现如下错误:

SyntaxError: Unexpected token }

线路女巫发生的错误是:

import { something } from "../my-json.json";

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

【问题讨论】:

  • 如果您使用该 json 作为模拟,您也可以将其作为对象存储在 js 文件中并导出。简单的解决方案:P
  • 这能回答你的问题吗? is there a require for json in node.js

标签: javascript jestjs


【解决方案1】:

您需要import json from 'filename.json'。确保如果您使用路径别名,则需要在 ModuleNameMapper 配置中的 jest.config.js 文件中配置它们。

【讨论】:

    【解决方案2】:
    const someObject = require('./somefile.json')
    

    【讨论】:

      【解决方案3】:
      const myJSON = require('./json_file_name.json')
      

      注意myJSON已经是对象了,不用JSON.parse

      【讨论】:

        【解决方案4】:

        如此处所述: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');
          

        【讨论】:

        • 似乎不适用于XML 文件...SyntaxError: Unexpected token '<'
        • 我可以看到原始问题用 javascript 开玩笑。所以我看不到 XML 文件在哪里混在一起。能否请您详细说明...?
        【解决方案5】:

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

        // tsconfig.ts
        
        {
          "compilerOptions": {
            "resolveJsonModule": true,
          }
        }
        

        这其实解决了Typescript对JSON文件的一般加载问题。

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

        【讨论】:

          【解决方案6】:

          适用于 Typescript / ts-jest 26.5

          import * as myJson from './mock/MyJson.json';
          
          ...
          
          const result = doAnyting(myJson);
          

          【讨论】:

          • japp, import myJson from './mock/MyJson.json'; 为我返回 undefined。更改为 import * as myJson from './mock/MyJson.json'; 使用 Typescript 和 ts-node 成功
          【解决方案7】:

          您需要在所有 '}' 之前删除 ','。我通过测试和错误找到了这个解决方案。

          【讨论】:

          • 请更具描述性。
          猜你喜欢
          • 2019-10-27
          • 2020-08-24
          • 2018-07-25
          • 1970-01-01
          • 2019-06-09
          • 2020-09-03
          • 2017-08-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多