无法使用mocha分析文件



为什么在mocha中,我的解析器返回一个错误,而在vanilla JS中,它工作得很好?这是我的解析器,我保存在一个单独的文件中,它应该解析CSV文件并从中提取值。

parser.js:

const fetch = require("node-fetch");
module.exports = async function(num) {
const response = await fetch('../date.csv');
const data = await response.text();
let rows = data.split('n');
let res = rows[0].split(',');
return res[num];
}

date.csv文件:

1,?start=2013-09-01&end=2013-09-05,SomeInfo,false
2,?start=2014-09-01&end=2014-09-05,SomeInfo,false

Mocha测试:

let file = require('../utils/parser');
let param = file(1);
describe('Account', () => {
it('Print', () => {
console.log(param);
});
});

日志:

Account
Promise {
<rejected> TypeError: Only absolute URLs are supported
at getNodeRequestOptions (node_modules/node-fetch/lib/index.js:1305:9)

您应该为文件提供一个绝对的url。

例如,在开始测试之前,设置一些环境变量,使其指向服务器的根url:

package.json

"scripts": {
...
"test": "BASE_URL='http://127.0.0.1:8080' mocha"
...
}

然后在代码中做这样的事情:

parser.js

const fetch = require("node-fetch");
module.exports = async function(num) {
const absPath = process.env.BASE_URL + '../date.csv'
const response = await fetch(absPath);
const data = await response.text();
let rows = data.split('n');
let res = rows[0].split(',');
return res[num];
}

或者使用来自节点的核心包"的url.pathToFileURL;url";(在节点版本v10.12.0中添加(

最新更新