【发布时间】:2020-02-13 05:48:11
【问题描述】:
我创建了一个函数,它基本上循环数组并创建文件。我开始使用 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' },
];
我一直在阅读,但无法真正弄清楚如何用玩笑来测试它。没有例子可以看。我尝试安装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();
});
谁能指出我正确的方向?
【问题讨论】:
标签: node.js typescript mocking jestjs fs