gpt4 book ai didi

reactjs - 使用 Jest 测试 React 元素高度

转载 作者:行者123 更新时间:2023-12-03 13:37:25 25 4
gpt4 key购买 nike

我有一个非常简单的 React.js 组件,它用“阅读更多”/“阅读更少”功能来装饰一长段标记。

我对 Jest 进行了一些测试,但是,我无法断言 DOM 元素高度正在增加到原始内容的大小。

在 Jest 测试环境中,我对 getDOMNode().scrollHeight 的调用似乎没有返回任何内容。

以下是包含代码和失败测试的存储库的链接:https://github.com/mguterl/react-jest-dom-question

下面是说明同一问题的代码和测试的简化版本:

简化代码

var ReadMore = React.createClass({
getInitialState: function() {
return {
style: {
height: '0px'
}
}
},

render: function() {
return (
<div>
<div ref='content' className='read-more__content' style={this.state.style} dangerouslySetInnerHTML={{__html: this.props.content}} />
<a onClick={this.expand} href='#'>Expand</a>
</div>
);
},

expand: function() {
// This call to scrollHeight doesn't return anything when testing.
var height = this.refs.content.getDOMNode().scrollHeight;

this.setState({
style: {
height: height
}
});
}
});

测试

jest.dontMock('../ReadMore');

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

describe('ReadMore', function() {
var readMore;
var content;
var link;

beforeEach(function() {
readMore = TestUtils.renderIntoDocument(
<ReadMore collapsedHeight='0px' content='<p>Hello World</p>' />
);

content = TestUtils.findRenderedDOMComponentWithClass(
readMore, 'read-more__content');

link = TestUtils.findRenderedDOMComponentWithTag(
readMore, 'a');
});

it('starts off collapsed', function() {
expect(content.getDOMNode().getAttribute('style')).toEqual('height:0px;');
});

it('expands the height to fit the content', function() {
TestUtils.Simulate.click(link);
expect(content.getDOMNode().getAttribute('style')).toEqual('height:100px;');
});
});

最佳答案

Jest“使用假 DOM 实现(通过 jsdom)运行您的测试,以便您的测试可以在命令行上运行”( http://facebook.github.io/jest/ )。

我不希望设置像元素高度这样的东西,因为它不是针对渲染引擎运行来计算任何 div 的高度。

我建议在任一状态或两种状态下的 div 上设置标记样式类(“阅读更多”/“阅读更少”)。然后您的测试可以断言类是否存在。

此外 - 如果您在“阅读更多”模式下根本没有设置样式属性,则应渲染封闭的 div 以完全显示内部 div(除非您不只是试图显示整个内部 div) 。那么,测试 style 属性在“少读”模式下具有 this.props.collapsedHeight 值而不是在“多读”模式下设置是否就足够了?

关于reactjs - 使用 Jest 测试 React 元素高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28387952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com