如何为public class Bat extends Animal<Bat> {
public Bat() {
super(Bat.class);
}
private void fly() {
setChild(Bat.class); // or initiate();
child.fly();
}
}
?
我的组件propTypes验证:
PropTypes.shape
我的单元测试:
MyComponent.propTypes = {
propA: PropTypes.string.isRequired,
propB: PropTypes.shape({
inner1: PropTypes.bool.isRequired,
inner2: PropTypes.func,
}).isRequired,
}
答案 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
})