如何测试React组件propTypes验证

时间:2017-08-17 13:29:36

标签: reactjs unit-testing jestjs react-proptypes

如何为public class Bat extends Animal<Bat> { public Bat() { super(Bat.class); } private void fly() { setChild(Bat.class); // or initiate(); child.fly(); } }

单元测试React组件的propTypes验证

我的组件propTypes验证:

PropTypes.shape

我的单元测试:

MyComponent.propTypes = {
  propA: PropTypes.string.isRequired,
  propB: PropTypes.shape({
    inner1: PropTypes.bool.isRequired,
    inner2: PropTypes.func,
  }).isRequired,
}

1 个答案:

答案 0 :(得分:2)

虽然我没有看到单元测试的重点,但您可以执行以下操作:

将您的形状导出为不同的对象

// some-descriptive-name-shape.js
export default {
   inner1: PropTypes.bool.isRequired,
   inner2: PropTypes.func,
}

并对其进行单元测试。

或者更通用的方法是使用sinon监视console.error并使用无效属性进行组件渲染,以便将其称为间谍

let consoleError;

beforeEach(() => {
    consoleError = spyOn(console, 'error');
});

afterEach(() => {
    consoleError.restore();
})

it('should warn on empty propB, () => {
   // do shallow render of <MyComponent />
   expect(consoleError.called).toBe(true)
   // etc
})