7

我正在尝试在我正在构建TDD的应用程序上做一些事情。React使用jest我能够测试我的渲染功能,看看我是否得到了我期望得到的渲染。如果我想在课堂上测试一些其他功能怎么办?我如何掌握它?例如,这是一个React类:

var moment = require('moment');
var React = require('react');
var utils = require('./utils');

module.exports = React.createClass({
    days: function() {
        var days = [];
        var nextMonth = this.daysFromNextMonth(days, numberOfDays);
        return days;
    },
    daysFromNextMonth: function(days, numberOfDays) {
        ...
    },
    render: function() {
        var that = this;
        var days = this.days().map(function(day, i) {
            return <li key={day}>{day}</li>
        return (
            <ul className='monthly-view'>
                {days}
            </ul>
        );
    }
});

我想抓住我的daysordaysFromNextMonth函数,看看它们是否返回了我所期望的。我试图jest获得这样的功能:

it('should show an render', function() {
    var result = DailyView.daysFromNextMonth(day, 10)
    ....
});

error说我没有办法daysFromNextMonth。我该如何解决?

4

3 回答 3

11

您需要渲染组件以引用其上的方法(类似于在使用实例方法之前实例化一个类):

var view = TestUtils.renderIntoDocument(<DailyView />)
var result = view.daysFromNextMonth(day, 10)

然后您可以调用任何实例方法。

于 2015-01-31T13:41:57.950 回答
2

使用酶,我发现此参考用于测试组件的功能, https://github.com/airbnb/enzyme/issues/208

const component = shallow(<MyComponent />);
component.instance().foo();

您必须先获取组件的实例,然后才能调用其方法,但这对我有用。

于 2017-08-16T17:24:10.803 回答
0

结合起来jest应该enzyme可以解决问题。查看jest DOM 测试文档和

基本思想是您可以使用enzyme浅层渲染组件和操作它们。

于 2017-04-28T05:30:01.793 回答