Javascript React-测试组件类型-预期失败

Javascript React-测试组件类型-预期失败,javascript,unit-testing,reactjs,Javascript,Unit Testing,Reactjs,我正在尝试测试一个组件,并且我一直在查看文档,对于如何测试它们的故障,我没有很好的参考资料 我想测试一个场景,在这个场景中,组件没有传递必需的属性,因此它将无法装载 我目前的测试: jest.dontMock('./Carousel.react.js'); jest.dontMock('react'); var React = require('react'); var ReactTestUtils = require('react-addons-test-utils'); var Carous

我正在尝试测试一个组件,并且我一直在查看文档,对于如何测试它们的故障,我没有很好的参考资料

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

我目前的测试:

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.dontMock('./Carousel.react.js');
开玩笑的唐特莫(“反应”);
var React=要求('React');
var reactestutils=require('react-addons-test-utils');
var Carousel=require('./Carousel.react.js');
/* 
旋转木马
道具类型:{
选项:React.PropTypes.array.isRequired,//图像URL数组
选项:React.PropTypes.string
},
*/
描述('Carousel',功能(){
它('未提供图像数组时应失败',函数(){
var失败=错误;
试一试{
var CarouselDom=reactestutils.renderIntoDocument();
var wrapperDiv=reactestutils.scryRenderedDOMComponentsWithTag(CarouselDom,'div');
}捕获(e){
失败=真;
}
expect(失败),toBe(真);
});
});

现在,虽然测试成功了,但这并不是测试未能安装组件的正确方法。正确的方法是什么?

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

describe('Carousel', () => {
  it('throws when image array is not provided', () => {
    expect(() => {
      var CarouselDom = ReactTestUtils.renderIntoDocument(<Carousel/>);
    }).toThrow();
  });
});
description('Carousel',()=>{
它('未提供图像数组时抛出',()=>{
期望(()=>{
var CarouselDom=reactestutils.renderIntoDocument();
}).toThrow();
});
});

看起来不错。是否需要scry声明?这确实让人感觉更优雅。