如何在 jest env 中存根或忽略 meteor/session?
How to stub or ignore meteor/session in jest env?
当我测试一个反应组件时,Jestjs 给我这个错误:
import {Session} from 'meteor/session' ". The error is "Cannot find module 'meteor/session' "
我的测试文件
import PlanSetup from "../../../ui/pages/planSetup/planSetup";
let PlanSetupWrapper;
const PlansetupProps={
name: "string",
budget: "string",
lang: { english: "en",
French : "fr"
}
};
describe('<PlanSetup />', () => {
PlanSetupWrapper = mount(<PlanSetup {...PlansetupProps}/>);
it('All child components renders correctly', () => {
expect(PlanSetupWrapper).toMatchSnapshot();
});
});
欢迎来到 Stack Overflow @MeghaRawat。这里有几件事需要考虑。
1) 保持组件纯净
2) 模拟 Meteor 服务
这意味着任何 React 组件都应该尽可能纯,而不是引用 Meteor - 容器应该这样做,并将 props 传递给组件。
Jest 不了解 Meteor,因此任何 Meteor 功能都需要存根,以防止您遇到此类问题。
如果您需要,我也许可以找到一些代码来帮助您。
**jest.config.js**
module.exports = {
moduleNameMapper: {
"^meteor/(.*)": "<rootDir>/imports/tests/mocks/meteor.js"
},
transform: {
"^.+\.(js|jsx)?$": "babel-jest",
".+\.(css|styl|less|sass|scss)$": "/home/megha/Megha/TVStack/dan-tvstack-ui/node_modules/jest-css-modules-transform",
},
moduleFileExtensions: [
'js',
'jsx'
],
modulePaths: [
"<rootDir>/node_modules/"
],
globals: {
"window": true
},
unmockedModulePathPatterns: [
'/^imports\/.*\.jsx?$/'
],
setupFiles: [
"<rootDir>/setupTests.js"
]
};
**<rootDir>/imports/tests/mocks/meteor.js**
exports._session = {
__: function(value) { return value }
};
当我测试一个反应组件时,Jestjs 给我这个错误:
import {Session} from 'meteor/session' ". The error is "Cannot find module 'meteor/session' "
我的测试文件
import PlanSetup from "../../../ui/pages/planSetup/planSetup";
let PlanSetupWrapper;
const PlansetupProps={
name: "string",
budget: "string",
lang: { english: "en",
French : "fr"
}
};
describe('<PlanSetup />', () => {
PlanSetupWrapper = mount(<PlanSetup {...PlansetupProps}/>);
it('All child components renders correctly', () => {
expect(PlanSetupWrapper).toMatchSnapshot();
});
});
欢迎来到 Stack Overflow @MeghaRawat。这里有几件事需要考虑。
1) 保持组件纯净 2) 模拟 Meteor 服务
这意味着任何 React 组件都应该尽可能纯,而不是引用 Meteor - 容器应该这样做,并将 props 传递给组件。
Jest 不了解 Meteor,因此任何 Meteor 功能都需要存根,以防止您遇到此类问题。
如果您需要,我也许可以找到一些代码来帮助您。
**jest.config.js**
module.exports = {
moduleNameMapper: {
"^meteor/(.*)": "<rootDir>/imports/tests/mocks/meteor.js"
},
transform: {
"^.+\.(js|jsx)?$": "babel-jest",
".+\.(css|styl|less|sass|scss)$": "/home/megha/Megha/TVStack/dan-tvstack-ui/node_modules/jest-css-modules-transform",
},
moduleFileExtensions: [
'js',
'jsx'
],
modulePaths: [
"<rootDir>/node_modules/"
],
globals: {
"window": true
},
unmockedModulePathPatterns: [
'/^imports\/.*\.jsx?$/'
],
setupFiles: [
"<rootDir>/setupTests.js"
]
};
**<rootDir>/imports/tests/mocks/meteor.js**
exports._session = {
__: function(value) { return value }
};