2014-09-23 5 views
2

У меня есть приложение-ответ, которое не использует инструмент browserify. Это означает, что переменная React экспортируется скриптом реакции js lib, вызванным в <head>.Как протестировать компонент React без Browserify

// React variable is already available 
var MyComponent = React.createClass({}); 

После реализации этого компонента я хочу создать для него тест. Я взглянул на Jest documentation, и я создал свой компонентный тест.

/** @jsx React.DOM */ 
jest.dontMock('../compiled_jsx/components/my-component.js'); 
describe('MyComponent', function() { 
it('The variables are being passed to component', function() { 
    var React = require('react/addons'); 

    // In the `MyComponent` import I got the error below: 
    // ReferenceError: /compiled_jsx/components/my-component.js: React is not defined 
    var myComponent = require('../compiled_jsx/components/my-component.js'); 
}); 

В Jest documentation примере оба компонента и его испытания использует require функцию для получения переменной React.

Есть ли способ выставить React переменную в компонент? Или это необходимо с помощью браузера для создания этого теста?

ответ

2

Jest работает в node.js, поэтому вам нужно использовать модули commonjs. Вы не используете браузеру со шуткой. Если вы действительно против модулей commonjs, вы можете сделать это, полагая, что каждый файл завернут в iffe.

var React = typeof require === 'undefined' 
       ? window.React 
       : require('react/addons'); 

Или же в качестве первой строки ваших тестов, попробуйте:

global.React = require('react/addons'); 

И так или иначе, экспортировать компоненты с помощью:

try { module.exports = Foo; } catch (e) { window.Foo = Foo }; 

Лично я не» Думаю, шутка практична, если вы не используете модули commonjs.

+0

Я не использую модули commonjs, но я использую React, и я не нашел лучшего способа проверить мое приложение React, чем Jest. Я подумал о том, чтобы применить метод «try/catch», но для меня это кажется уродливым. Я ищу лучший способ сделать это. Какую тестовую библиотеку вы рекомендуете вместо Jest? Спасибо заранее. –

+0

Jest - лучший вариант, но тест-утилиты mocha + react должны быть достаточно хорошими. Вам нужно будет либо использовать карму + фантомы, либо тестовый бегун на основе браузера (я думаю, что у мокки есть один). – FakeRainBrigand

+1

Хорошо. Я думаю, что лучше адаптировать мое приложение для использования модулей commonjs . Спасибо @FakeRainBrigand –