Невозможно импортировать класс Reactjs для тестирования с использованием мокко и фермента

Код моего тестового файла:

var React = require('react');
var {shalow} = require('enzyme')
var {SearchBox} = require('../static/js/functions')
var expect = require('expect');

describe('Test', function(){
  it('1', function(){
    expect(true).toEqual(true);
  });
});

Это мой класс React в functions.js

var SearchBox = React.createClass({
  render: function() {
    return (
      <div>
        <SearchList data={this.props.data}></SearchList>
        <li>
          <button id="previous_page" className="previous_page" onClick={back}>Previous</button>
          <button id="next_page" className="next_page" onClick={next}>Next</button>
        </li>
      </div>
    )
  }
});

Он работает нормально, но я хочу написать тесты, и когда я его запускаю, он выдает следующую ошибку:

irtza @ irtza-Lenovo-G50-70: ~ / Desktop / Kamal Hasan / pedialink $ mocha ./js_test/*.js / home / irtza / Desktop / Kamal Hasan / pedialink / static / js / functions.js: 39, ^ SyntaxError: Неожиданный токен ‹в exports.runInThisContext (vm.js: 53: 16) в Module._compile (module.js: 511: 25) в Object.Module._extensions..js (module. js: 550: 10) в Module.load (module.js: 456: 32) в tryModuleLoad (module.js: 415: 12) в Function.Module._load (module.js: 407: 3) в Module.require ( module.js: 466: 17) в require (internal / module.js: 20: 19) в Object. (/ home / irtza / Desktop / Kamal Hasan / pedialink / js_test / test.js: 3:19) в Module._compile (module.js: 541: 32) в Object.Module._extensions..js (module.js: 550: 10) в Module.load (module.js: 456: 32) в tryModuleLoad (module.js: 415: 12) в Function.Module._load (module.js: 407: 3) в Module.require (module. js: 466: 17) в require (internal / module.js: 20:19) в /usr/local/lib/node_modules/mocha/lib/mocha.js:220:27 в Array.forEach (native) в Mocha. loadFiles (/usr/local/lib/node_modules/mocha/lib/mocha.js:217:14) в Mocha.run (/usr/local/lib/node_modules/mocha/lib/mocha.js:485:10) по адресу Объект. (/ usr / local / lib / node_modules / mocha / bin / _mocha: 405: 18) в Module._compile (module.js: 541: 32) в Object.Module._extensions..js (module.js: 550: 10) ) в Module.load (module.js: 456: 32) в tryModuleLoad (module.js: 415: 12) в Function.Module._load (module.js: 407: 3) в Function.Module.runMain (module.js : 575: 10) при запуске (node.js: 159: 18) в node.js: 444: 3


person Kamal Hasan    schedule 02.08.2016    source источник


Ответы (2)


Ваш код представляет собой смесь синтаксиса ES5 и ES6.

Я думаю, что проблема связана с этой частью кода:

var React = require('react');
var {shalow} = require('enzyme');
var {SearchBox} = require('../static/js/functions');

Если вы хотите использовать синтаксис ES5:

var React = require('react');
var shalow = require('enzyme').shalow; // notice how we access object property `.objectProperty`
var SearchBox = require('../static/js/functions');

Если вы хотите использовать синтаксис ES6:

import React from 'react';
import {shalow} form 'enzyme'; // notice how we access object property `{objectProperty}` 
import SearchBox form '../static/js/functions'; 

также убедитесь, что в конце файла function.js вы экспортируете компонент с помощью:

module.exports = SearchBox; // ES5 syntax
export default SearchBox; // ES6 syntax
person Louis Barranqueiro    schedule 03.08.2016

Вам необходимо обновить версию Node (mocha зависит от node.js) (для поддержки модулей es6) или экспортировать свой компонент с помощью requireJS - module.exports ... + Вы должны проверить, какие части es6 поддерживает ваша версия node, потому что код прошел к мокко не "бабелизируют" :)

person Moonjsit    schedule 02.08.2016
comment
Проверьте: kangax.github.io/compat-table/es6, если вы не с использованием неподдерживаемых частей JS. Плюс что впереди и назад (передано в onClick)? Определены где-нибудь? - person Moonjsit; 03.08.2016