我需要测试一个模块在Windows和Linux下是否都可以工作。该模块正在解析路径,并且取决于操作系统,该路径包含正斜杠或反斜杠。它使用path.sep
确定使用哪个斜杠。在我的测试案例中,我想测试两个操作系统。我的问题是我无法弄清楚如何更改path.sep的值,因为它是属性而不是函数。
我想念什么吗?如何模拟path.sep
属性?我希望有人可以对此有所了解。
答案 0 :(得分:1)
这是一个简单的工作示例:
code.js
const path = require('path');
export const func = () => path.sep === '/' ? 'foo' : 'bar';
code.test.js
const path = require('path');
import { func } from './code';
test('func', () => {
path.sep = '/';
expect(func()).toBe('foo'); // Success!
path.sep = '\\';
expect(func()).toBe('bar'); // Success!
});
如果您使用它,看起来也可以使用
import path from 'path';
...但是它(至少在我的环境中)不起作用
import * as path from 'path';
(由于path
当前不是ES6模块,因此编译器必须做一些工作才能使ES6导入语法正常工作,并且import * as path from 'path';
必须以一种打破上述方法的方式进行编译。)