私はreactプロジェクトで次の環境を設定しました。以下はpackage.jsonファイルです:-
{
"name": "testing",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.5.2",
"react-dom": "^16.5.2",
"react-scripts": "2.0.5"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "jest",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
],
"devDependencies": {
"babel-core": "^6.26.3",
"babel-jest": "^23.6.0",
"babel-loader": "^8.0.4",
"babel-polyfill": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"enzyme": "^3.7.0",
"enzyme-adapter-react-16": "^1.6.0",
"jest": "^23.6.0",
"react-test-renderer": "^16.5.2"
},
"jest": {
"setupTestFrameworkScriptFile": "<rootDir>/src/setupTest.js",
"transform": {
"\\.js$": "babel-jest"
},
"verbose": true,
"moduleNameMapper": {
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/client/assetsTransformer.js"
},
"moduleFileExtensions": [
"js",
"jsx"
],
"moduleDirectories": [
"node_modules"
]
},
"babel": {
"presets": [
"react",
"es2015"
]
}
}
実行するたびにnpm test
コマンド次のエラーをスローします
私が取り組んでいるコンポーネントファイルは次のようになります:-
import React, { Component } from 'react';
class Increment extends Component {
constructor() {
super();
this.state = {
count: 0,
}
}
makeIncrementer = amount => () =>
this.setState(prevState => ({
count: prevState.count + amount,
}));
increment = this.makeIncrementer(1);
decrement = this.makeIncrementer(-1);
render() {
return (
<div>
<p>Count: {this.state.count}</p>
<button className="increment" onClick={this.increment}>Increment count</button>
<button className="decrement" onClick={this.decrement}>Decrement count</button>
</div>
)
}
}
export default Increment;
そして私が書いたテストケースは次のとおりです:-
import React from 'react';
import { shallow } from 'enzyme';
import Increment from './increment';
describe('App component', () => {
it('starts with a count of 0', () => {
const wrapper = shallow(<Increment />);
const text = wrapper.find('p').text();
expect(text).toEqual('Count: 0');
});
});
この問題を解決するのを手伝っていただけませんか。この特定のトピックに関連するStackOverflowのすべてのソリューションを試しましたが、解決できませんでした。
上記の問題は、インストールすることで解決できます babel-plugin-syntax-class-properties
続いてインストール babel-plugin-transform-class-properties
これら2つのプラグインを組み合わせると、テストケースを正常に実行できました。
makeIncrementer = amount => {
this.setState(prevState => ({
count: prevState.count + amount,
}));
}
makeIncrementer関数は上記のようにする必要があります。