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

React - Testing component propTypes - expecting a failure

本文关键字:失败 组件 测试 React propTypes      更新时间:2023-09-26

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

我想测试一个场景,在这个场景中,组件没有传递必需的属性,因此它将无法挂载。

我当前的测试:

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);
  });
});

现在,虽然测试成功了,但这感觉不是测试组件挂载失败的正确方法。正确的方法是什么?

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

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