我的jestSetup.js
文件(从package.json
指向)中有最有趣的模拟(模拟的函数,模块和组件),并且在单个测试文件中也具有模拟,包括单元测试和快照测试。 。
在我的单个快照测试中,模拟不再起作用(因为升级到RN 0.56)-模拟存在(我可以用console.log它们登录),但是当运行快照测试时,模拟函数不会被调用-而是称为“实际”功能。对于以相同方式定义但仍放在jestSetup.js
中的模拟,情况并非如此-快照在jestSetup.js
中定义时,快照按预期方式调用了模拟函数。
我已将尽可能多的模拟迁移到jestSetup.js,但不幸的是,某些测试要求取消模拟功能(例如单元测试),因此无法修复所有新错误。
有人可以看到一种方法来启用我的模拟在单独的测试文件中工作吗?
Profile.test.js
import 'react-native';
import renderer from 'react-test-renderer';
import React from 'react';
import sinon from 'sinon';
jest.mock(
'../../src/components/common/ProfilePicture/StarredPicture/StarredPicture',
() => () => { return ''; },
);
test('renders correctly', () => {
const stub = sinon.stub(console, 'error');
const tree = renderer.create(<Profile />).toJSON();
const tree = renderer
.create(<Profile />)
.toJSON();
expect(tree).toMatchSnapshot();
// call count is one to reflect one required proptypes.
expect(stub.callCount).toEqual(1);
package.json
"jest": {
"automock": false,
"preset": "react-native",
"setupFiles": [
"./src/jestSetup",
],
"transform": {
"^.+\\.js$": "<rootDir>/node_modules/react-native/jest/preprocessor.js"
},
"transformIgnorePatterns": [
"node_modules/(?!@expo)/"
],
"collectCoverageFrom": [
"src/**/*.js"
]
}