Jest + React TestUtils:使用 TestUtils.renderIntoDocument 渲染 <meta> 标签
Jest + React TestUtils: Render a <meta> tag with TestUtils.renderIntoDocument
我正在编写一个 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 本身以某种方式完成吗?
结果是 super-long 错误堆栈跟踪:
我的 preprocessor.js 文件:
// preprocessor.js
var ReactTools = require('react-tools');
module.exports = {
process: function(src) {
return ReactTools.transform(src);
}
};
感谢您就此向我发送消息,因为它给了我重新访问它的动力,结果是神秘的错误消息不再说它曾经说过的话,而是说我的元标记没有有效的 JSX 终止(DUH!),所以这就是它工作的原因:
var ClientIpMetaTag = TestUtils.renderIntoDocument(
<meta name="client-ip" content="50.200.28.114" />
);
只需在右箭头前添加斜杠即可使其成为有效的 JSX。在我升级到 React 0.13 后,我看到了这条更有帮助的消息,这可能对错误消息进行了改进(我猜)。
我正在编写一个 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 本身以某种方式完成吗?
结果是 super-long 错误堆栈跟踪:
我的 preprocessor.js 文件:
// preprocessor.js
var ReactTools = require('react-tools');
module.exports = {
process: function(src) {
return ReactTools.transform(src);
}
};
感谢您就此向我发送消息,因为它给了我重新访问它的动力,结果是神秘的错误消息不再说它曾经说过的话,而是说我的元标记没有有效的 JSX 终止(DUH!),所以这就是它工作的原因:
var ClientIpMetaTag = TestUtils.renderIntoDocument(
<meta name="client-ip" content="50.200.28.114" />
);
只需在右箭头前添加斜杠即可使其成为有效的 JSX。在我升级到 React 0.13 后,我看到了这条更有帮助的消息,这可能对错误消息进行了改进(我猜)。