gpt4 book ai didi

javascript - 在 Node js/Mochausing require 模块动态传递文件名中加载 json 文件内容

转载 作者:行者123 更新时间:2023-12-01 01:19:59 25 4
gpt4 key购买 nike

我正在使用 mocha/node js/cypress 工具编写测试脚本,并能够使用以下语句加载 json 文件的数据:

var data = require('../../fixtures/TestData/JsonData/ABC_DEF.json');

如果我必须传递文件名 - ABC_DEF.json动态地在脚本中如下,它不起作用。

var filename = 'ABC_DEF.json'
var data = require('../../fixtures/TestData/JsonData/'+filename);

我在 Cypress 控制台中看到的错误是:

Uncaught Error: Cannot find module '../../fixtures/TestData/JsonData/ABC_DEF.json'

任何意见都将受到高度赞赏。

注意:目的是读取文件名为动态变量的文件内容,并使用其值构造测试名称 - it()动态地。因此文件必须在描述 block 内读取,因为它优先于 before()it() block 。因此,cy无法使用命令,因为它们不在测试之外运行,并且 fs不能使用,因为它们仅在 Node 上下文中运行,这又只能通过 cy.task 来实现

最佳答案

我会向 readFileSync 添加编码,如下所示:

var fs = require('fs');
var data = fs.readFileSync('../../fixtures/TestData/JsonData/ABC_DEF.json', {encoding: 'utf-8'});
console.log(data);

如果您想要一个字符串而不是Buffer。如果您希望它成为一个对象,您可以使用JSON.parse(data)将其放入对象中。

我刚刚在命令行中执行了此操作,并且我有一个 test.json 文件:

> fs.readFileSync('test.json');
<Buffer 7b 0d 0a 09 22 74 65 73 74 22 3a 20 31 0d 0a 7d>
> fs.readFileSync('test.json', {encoding: 'utf-8'})
'{\r\n\t"test": 1\r\n}'
> JSON.parse(fs.readFileSync('test.json', {encoding: 'utf-8'}))
{ test: 1 }

关于javascript - 在 Node js/Mochausing require 模块动态传递文件名中加载 json 文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54316733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com