Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 通过jest运行测试,我在包含的.jsx文件中得到了“意外令牌”_Reactjs_Npm_Babeljs_Jestjs - Fatal编程技术网

Reactjs 通过jest运行测试,我在包含的.jsx文件中得到了“意外令牌”

Reactjs 通过jest运行测试,我在包含的.jsx文件中得到了“意外令牌”,reactjs,npm,babeljs,jestjs,Reactjs,Npm,Babeljs,Jestjs,我正在使用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';

我正在使用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)

    })
  })
});

修好了。我的
.babelrc
放错文件夹了。它应该在根目录中。当我把它搬到那里时,一切都起了作用

{
  "presets": [
     "react",
     "es2015"
  ]
}

@connect
中使用时,Jest可能抛出
意外标记的另一个地方是在
@
上(在大多数教程中都会遇到)。在package.json文件中附加babel plugin transform decorators legacy,运行
npm install
,并确保在.babelrc文件中有行
“预设”:[“es2015”、“react”、“stage-0”]
“plugins”:[“transform decorators legacy”]

另一个可以查看的地方是任何jest配置。例如,可能对某些源应用了JSX转换,但并非对所有源应用了JSX转换。

searchPath='../../../../../app
ouch;)是的,我知道:(这是一个Rails项目,所以有很多嵌套。有没有一种常见的方法来解决这个问题?我还不太熟悉JS测试。Rails有一种时髦的自动加载机制,可以自动找到文件,所以在我的测试中通常不需要这种机制。@MattGibson我曾经使用过这种方法。用户还可以在package.jso上添加以下代码片段n:
“babel”:{“presets”:[“react”,“es2015”]}
,对于那些喜欢软件包中所有内容的人来说。谢谢你……还有更多字符对于那些使用较新代码的人来说,上面应该是“presets”:[“@babel/preset react”,“@babel/preset env”]
{
  "presets": [
     "react",
     "es2015"
  ]
}
{
  "presets": [
     "react",
     "es2015"
  ]
}