开玩笑:模拟导入 JSON 文件
Jest : Mock import of JSON file
我目前正在像这样测试我的一个 React 组件:
it('renders correctly', () => {
const tree = renderer.create(<Scene {...props} />).toJSON();
expect(tree).toMatchSnapshot();
});
我的组件 Scene
导入一个 setting.json
文件。我在我的本地实例上有该文件,但我没有将它推送到我的 CI 实例上。所以当它尝试导入它时,找不到文件。
有没有办法在我的测试中模拟这个文件?
您可以在 jest 设置中使用 moduleNameMapper
将导入指向模拟的 json 文件。
{
"moduleNameMapper": {
"setting.json": "<rootDir>/__mocks__/setting.json"
}
}
或者你可以在测试中使用jest.mock
直接模拟文件,注意你必须添加{ virtual: true }
参数。
jest.mock('path/to/setting.json', ()=>({
settings: 'someSetting'
}), { virtual: true })
对于那些希望以 Array
的形式模拟 JSON 的人,只需 return 来自回调的数组。
jest.mock('./data.json', () => ([1, 2, 3]));
您还可以 return 其他有效的 JSON 类型:Object
、String
、Number
、Boolean
或 Null
.
我目前正在像这样测试我的一个 React 组件:
it('renders correctly', () => {
const tree = renderer.create(<Scene {...props} />).toJSON();
expect(tree).toMatchSnapshot();
});
我的组件 Scene
导入一个 setting.json
文件。我在我的本地实例上有该文件,但我没有将它推送到我的 CI 实例上。所以当它尝试导入它时,找不到文件。
有没有办法在我的测试中模拟这个文件?
您可以在 jest 设置中使用 moduleNameMapper
将导入指向模拟的 json 文件。
{
"moduleNameMapper": {
"setting.json": "<rootDir>/__mocks__/setting.json"
}
}
或者你可以在测试中使用jest.mock
直接模拟文件,注意你必须添加{ virtual: true }
参数。
jest.mock('path/to/setting.json', ()=>({
settings: 'someSetting'
}), { virtual: true })
对于那些希望以 Array
的形式模拟 JSON 的人,只需 return 来自回调的数组。
jest.mock('./data.json', () => ([1, 2, 3]));
您还可以 return 其他有效的 JSON 类型:Object
、String
、Number
、Boolean
或 Null
.