Node.js+React для автоматизации тестов с помощью Jest

Изменить (02.07.2015)

Выяснил, что я делаю не так. Оставив это для справки, если кто-то наткнется на ту же проблему. Проверьте мой ответ ниже.


В настоящее время я пытаюсь протестировать свои компоненты Node.js + React с помощью Jest. Я установил jest-cli и создал задачу в своем gulpfile для запуска «теста npm».

Я как-то следовал инструкциям, найденным здесь: http://www.undefinednull.com/2015/05/03/react-tdd-example-unit-testing-and-building-a-react-component-with-jest-gulp-and-react-test-utils/

И пошел в репозиторий проекта git, чтобы найти, как настроить некоторые другие вещи.

Однако, когда я запускаю команду «gulp test», по-видимому, все, что я получаю, — это проверка кода eslint. Я не думаю, что мои тесты вообще работают.

моя соответствующая структура папок выглядит следующим образом:

/__tests__
    searchComponent-spec.js
/src
    /components
        /Search
            Search.js
package.json
gulpfile.babel.js

есть много других вещей, но я не верю, что они актуальны.

Мой Search.js

/*! React Starter Kit | MIT License | http://www.reactstarterkit.com/ */

import React, { PropTypes } from 'react';
import styles from './Search.less';
import withStyles from '../../decorators/withStyles';
import Link from '../../utils/Link';

@withStyles(styles)
class Search {

  static contextTypes = {
    onSetTitle: PropTypes.func.isRequired
  };

  render() {
    let title = 'Pesquisa de desenvolvedores';
    this.context.onSetTitle(title);
    return (
      <div className="Search">
        <div className="Search-container">
          <a className="Search-brand" href="/" onClick={Link.handleClick}>
            <span className="Search-brandTxt">Dev-Shop</span>
          </a>
          <div className="Search-banner">
            <h1 className="Search-bannerTitle">Loja de desenvolvedores</h1>
          </div>
        </div>
      </div>
    );
  }

}

export default Search;

Мой searchComponent-spec.js:

/**
 * Created by urielbertoche on 02/07/15.
 */
"use strict";

jest.dontMock('../src/components/Search/Search.js');

describe('Search', function () {
  var React = require('react/addons');
  var TestUtils = React.addons.TestUtils;
  var Search;

  beforeSearch(function () {
    Search = require('../src/components/Search');
  });

  it('should exists', function () {
    // Render into document
    var search = TestUtils.renderIntoDocument(<Search />);
    expect(TestUtils.isCompositeComponent(search)).toBeTruthy();
  });
});

кто-нибудь понял, почему мои тесты могут не работать? Большое спасибо


person Uriel Bertoche    schedule 03.07.2015    source источник


Ответы (1)


Я нашел проблему. В моем package.json была запись:

  "jest": {
    "rootDir": "./src",
    "scriptPreprocessor": "../preprocessor.js",
    "unmockedModulePathPatterns": [
      "../node_modules/react"
    ]
  },

что я облажался, так это то, что моя папка tests не находилась в том же корневом каталоге, объявленном там, она была в его родительском, перемещение папки tests в мою папку src исправило это.

person Uriel Bertoche    schedule 03.07.2015