【问题标题】:Jest + React TestUtils: Render a <meta> tag with TestUtils.renderIntoDocumentJest + React TestUtils:使用 TestUtils.renderIntoDocument 渲染 <meta> 标记
【发布时间】:2015-03-30 13:47:11
【问题描述】:

我正在编写一个 React 组件,该组件依赖于特定名称的元标记出现在 DOM 的头部区域中,因此我尝试使用 TestUtils.renderIntoDocument 来创建该元标记以运行我的 Jest 测试,这不起作用。

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 或 React 本身以某种方式完成吗?

结果是一个超长的错误堆栈跟踪:

我的 preprocessor.js 文件:

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

【问题讨论】:

  • 您解决了这个问题吗?如果有,怎么做?
  • 还没有解决,我需要在某个时候重新审视它,因为我相信我会想出另一个需要这个工作的理由。

标签: reactjs jestjs reactjs-testutils


【解决方案1】:

感谢您在此问题上对我进行 ping,因为它给了我重新访问它的动力,事实证明,神秘的错误消息不再是以前所说的,而是说我的元标记没有有效的 JSX终止(DUH!),所以这就是使它起作用的原因:

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

只需在右箭头前添加斜线即可使其有效 JSX。在升级到 React 0.13 后,我看到了这条更有帮助的消息,这可能对错误消息进行了改进(我猜)。

【讨论】:

    猜你喜欢
    • 2014-12-15
    • 2015-01-22
    • 2018-06-28
    • 2022-08-22
    • 2021-04-23
    • 2020-07-04
    • 1970-01-01
    • 2018-07-18
    • 2016-01-02
    相关资源
    最近更新 更多