在Node js / Mochausing中加载json文件内容需要模块动态传递文件名
我使用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);
我在赛普拉斯控制台中看到的错误是:
未捕获错误:找不到模块'../../fixtures/TestData/JsonData/ABC_DEF.json'
任何输入都受到高度赞赏。
注意:目标是读取文件名为动态变量的文件内容,并使用它的值动态构造测试名称 - it()
。所以必须在describe块中读取文件,因为它优先于before()
和it()
块。因此,cy
命令不能被使用,因为它们不在外部测试运行,并且fs
不能被使用,因为它们仅在节点上下文中运行,再次这可能仅通过cy.task
我会在readFileSync
中添加一个编码,如下所示:
var fs = require('fs');
var data = fs.readFileSync('../../fixtures/TestData/JsonData/ABC_DEF.json', {encoding: 'utf-8'});
console.log(data);
如果你想要一个字符串而不是Buffer
。如果你想要它是一个Object
,你可以使用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 }
在Node js / Mochausing中加载json文件内容需要模块动态传递文件名
我使用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);
我在赛普拉斯控制台中看到的错误是:
未捕获错误:找不到模块'../../fixtures/TestData/JsonData/ABC_DEF.json'
任何输入都受到高度赞赏。
注意:目标是读取文件名为动态变量的文件内容,并使用它的值动态构造测试名称 - it()
。所以必须在describe块中读取文件,因为它优先于before()
和it()
块。因此,cy
命令不能被使用,因为它们不在外部测试运行,并且fs
不能被使用,因为它们仅在节点上下文中运行,再次这可能仅通过cy.task
我会在readFileSync
中添加一个编码,如下所示:
var fs = require('fs');
var data = fs.readFileSync('../../fixtures/TestData/JsonData/ABC_DEF.json', {encoding: 'utf-8'});
console.log(data);
如果你想要一个字符串而不是Buffer
。如果你想要它是一个Object
,你可以使用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 }