作为一个例子,我使用了Make React PropType warnings throw errors with enzyme.js + sinon.js + mocha.js。
我有一个React组件,其中包含一个必需的prop:
class Pagination extends Component {
render() {
return (
... render some stuff
);
}
}
Pagination.propTypes = {
total: PropTypes.number.isRequired
};
这是对它的考验:
describe('(Component) Pagination', () => {
before(() => {
sinon.stub(console, 'error', (warning) => { throw new Error(warning) })
})
after(() => { console.error.restore() })
it('render fails without props', () => {
shallow(<Pagination />);
});
it('render fails without props2', () => {
shallow(<Pagination />);
});
});
运行测试后,第一个崩溃,但第二个 - 没有。测试类似。 我认为问题是React只抛出一次警告消息。 怎么避免这个?
我想要进行2次测试:一次在没有设置道具时会崩溃,第二次在道具上工作正常。
答案 0 :(得分:1)
您可以找到解决方法here:
inline
你显然是正确的,因为它是相同的组件,如果你在每次测试之前这样做,那么它会欺骗它。只是一个黑客,但它的工作原理。显然没有更好的方法。
P.S。我是在Pagination.displayName = Math.random().toString();
中完成的,不在自己的每个测试中写它。
P.P.S.随机不是最可靠的,因为你可以得到相同的名称,它会失败,如果它不够好,可以使用guid或其他任何东西,它只是一个例子。