2015-01-31 5 views
1

Я пишу компонент React, который зависит от метатега определенного имени, присутствующего в области заголовка DOM, поэтому я пытаюсь использовать TestUtils.renderIntoDocument для создания этого метатега для запуска теста Jest, который не работает.Jest + React TestUtils: Render a <meta> tag with TestUtils.renderIntoDocument

jest.dontMock('../channel-finder'); 

describe('Channel Finder Component', function() { 
    it('Renders properly with no props', function() { 

    var React = require('react/addons'); 
    var ChannelFinder = require('../channel-finder'); 
    var TestUtils = React.addons.TestUtils; 

    // Render into Document 
    var ChannelFinderComponent = TestUtils.renderIntoDocument(
     <ChannelFinder /> 
    ); 
    var ClientIpMetaTag = TestUtils.renderIntoDocument(
     <meta name="client-ip" content="50.200.28.114"> 
    ); 

    // Find Rendered DOM Component 
    var ChannelFinderDomElement = TestUtils.findRenderedDOMComponentWithTag(ChannelFinderComponent, 'div'); 

    // Assert Results 
    expect(ChannelFinderDomElement.getDOMNode().textContent).toEqual(''); 
    }); 
}); 

Можно ли это сделать либо с помощью React TestUtils, либо как-либо отреагировать?

Результат супер-длинный стек ошибок трассировки: enter image description here

Мой preprocessor.js файл:

// preprocessor.js 
var ReactTools = require('react-tools'); 
module.exports = { 
    process: function(src) { 
    return ReactTools.transform(src); 
    } 
}; 
+0

Вы решили эту проблему? Если да, то как? –

+0

Не решил это, и мне нужно пересмотреть его в какой-то момент, потому что я уверен, что придумаю еще одну причину, чтобы эта работа работала. – eriklharper

ответ

0

Спасибо за пингом меня на это, так как это дало мне мотивацию вернуться к рассмотрению, и оказалось, что загадочное сообщение об ошибке больше не говорит о том, что он говорил, вместо этого он говорит, что мой метатег не имел действительного завершения JSX (DUH!), поэтому это и заставило его работать:

var ClientIpMetaTag = TestUtils.renderIntoDocument(
    <meta name="client-ip" content="50.200.28.114" /> 
); 

Просто добавьте косую черту перед стрелкой вправо, чтобы она была действительной JSX. Я увидел это более полезное сообщение после того, как я обновился до React 0.13, что, вероятно, улучшило обмен сообщениями об ошибках (я предполагаю).