JestとBabel 6を使用して、.jsxファイルを含むテストを実行しようとしています。何らかの理由で、ファイルは.jsxとしてピックアップされておらず、純粋なjsとして扱われているように見えるため、Reactコンポーネントを持つ行でエラーが発生します。
これはテストです:
var searchPath = '../../../../../app/assets/javascripts/components/navigation/search_icon.js.jsx';
jest.dontMock(searchPath);
import React from 'react';
import ReactDOM from 'react-dom';
import TestUtils from 'react-addons-test-utils'
const SearchIcon = require(searchPath);
describe('components', () => {
describe('SearchIcon', () => {
it('Should dispatch an action to toggle the search bar when clicked', () => {
var icon = TestUtils.renderIntoDocument(
<SearchIcon labelOn="On" labelOff="Off"/>
);
// Smoke test - I can't even get this far :(
expect(true).to.eq(true)
})
})
});
私のpackage.jsonはこちらです:
{
"name": "fd-v5-web",
"version": "1.0.0",
"description": "Farmdrop mobile site",
"dependencies": {
"babel-preset-es2015": "^6.0",
"babel-preset-stage-0": "^6.0",
"babel-preset-react": "^6.0",
"babelify": "~>7.2",
"browserify": "~> 10.2.4",
"browserify-incremental": "^3.0.1",
"classnames": "~>2.1",
"immutable": "^3.7.5",
"lodash": "~3.9.3",
"moment": "~2.10.3",
"react": "^0.14.3",
"react-redux": "^4.0.0",
"react-dom": "^0.14.6",
"react-tools": "^0.13.1"
},
"engines": {
"node": "4.0.0",
"npm": "2.1.x"
},
"devDependencies": {
"babel-jest": "*",
"jest-cli": "*",
"react-addons-test-utils": "^0.14.3"
},
"scripts": {
"test": "BABEL_JEST_STAGE=0 jest"
},
"jest": {
"scriptPreprocessor": "<rootDir>/node_modules/babel-jest",
"unmockedModulePathPatterns": [
"<rootDir>/node_modules/react",
"<rootDir>/node_modules/react-dom",
"<rootDir>/node_modules/react-addons-test-utils",
"<rootDir>/node_modules/fbjs"
],
"testFileExtensions": [
"js"
],
"moduleFileExtensions": [
"js",
"jsx",
"json",
"es6"
]
}
}
そして、私はコマンドラインでnpm test
俺の .babelrc
は次のようになります。
{
"presets": [
"react",
"es2015"
]
}
修正しました。私は私の.babelrc
間違ったフォルダー。ルートディレクトリにある必要があります。そこに移動すると、すべてが機能しました。
{
"presets": [
"react",
"es2015"
]
}
JestがUnexpected token
を投げる可能性のある別の場所は、@
で使用する場合の@connect
にあります(チュートリアルの大部分で満たされています)。 package.jsonファイルにbabel-plugin-transform-decorators-legacyを接続し、npm install
を実行し、.babelrcファイルに"presets": ["es2015", "react", "stage-0"]
および"plugins": ["transform-decorators-legacy"]
の行があることを確認します。
別の場所はjest transform configurationです。たとえば、すべてではなく一部のソースにJSX変換が適用される場合があります。