React - 测试组件propTypes - 期待失败

时间:2016-09-13 16:00:43

标签: javascript unit-testing reactjs

我正在尝试测试一个组件而且我一直在查看文档,而且我没有很好地参考如何测试它们的失败。

我想测试组件未传递必需属性的情况,因此无法安装。

我目前的测试:

jest.dontMock('./Carousel.react.js');
jest.dontMock('react');
var React = require('react');
var ReactTestUtils = require('react-addons-test-utils');
var Carousel = require('./Carousel.react.js');

/* 
Carousel propTypes
propTypes: {
  choices: React.PropTypes.array.isRequired, // an array of image URLs
  choice: React.PropTypes.string
},
*/

describe('Carousel', function () {

  it('should fail when images array is not provided', function () {
    var failed = false;
    try {
      var CarouselDom = ReactTestUtils.renderIntoDocument(<Carousel/>);
      var wrapperDiv = ReactTestUtils.scryRenderedDOMComponentsWithTag(CarouselDom, 'div');
    } catch(e) {
      failed = true;
    }
    expect(failed).toBe(true);
  });

});

现在,虽然测试成功,但这并不像测试组件无法安装的正确方法那样。什么是正确的方法?

1 个答案:

答案 0 :(得分:1)

使用Jest编写测试的一种稍微优雅的方式是:

describe('Carousel', () => {
  it('throws when image array is not provided', () => {
    expect(() => {
      var CarouselDom = ReactTestUtils.renderIntoDocument(<Carousel/>);
    }).toThrow();
  });
});