我创建了一个函数,基本上是循环遍历数组并创建文件。我开始使用Jest进行测试,以确保一切正常,但尝试模拟Node.js文件系统时遇到了一些问题。
这是我希望测试的函数 - function.ts:
export function generateFiles(root: string) {
fs.mkdirSync(path.join(root, '.vscode'));
files.forEach((file) => {
fs.writeFileSync(
path.join(root, file.path, file.name),
fs.readFileSync(path.join(__dirname, 'files', file.path, file.name), 'utf-8')
);
});
}
const files = [
{ name: 'tslint.json', path: '' },
{ name: 'tsconfig.json', path: '' },
{ name: 'extensions.json', path: '.vscode' },
];
我一直在阅读,但无法弄清楚如何使用jest进行测试。没有可供参考的示例。我尝试安装mock-fs
,这应该是获取运行虚拟版本的Node.js FS模块的简单方法,但是我真的不知道从哪里开始。这是我第一次尝试制作一个简单的测试,它引起了错误,并说“没有此文件或目录”- function.test.ts:
import fs from 'fs';
import mockfs from 'mock-fs';
beforeEach(() => {
mockfs({
'test.ts': '',
dir: {
'settings.json': 'yallo',
},
});
});
test('testing mock', () => {
const dir = fs.readdirSync('/dir');
expect(dir).toEqual(['dir']);;
});
afterAll(() => {
mockfs.restore();
});
有谁可以指点一下我应该走哪个方向吗?
fs.existsSync()
返回true
,那么你的代码应该执行X
,否则应该执行Y
,这样描述是有意义的。 - Teneff