我在使用Mobx注入和开玩笑测试组件时遇到问题。 这是组件:
@inject("mainStore") @observer
export default class TestContainer extends React.Component {
sum(a, b) {
return a + b;
}
render() {
return <div className="TestContainer">phhhaz</div>
}
}
这是一个测试:
describe('TestContainer', () => {
it('knows that 2 and 2 make 4', () => {
const wrapper = shallow(<TestContainer mainStore={{}} />);
expect(wrapper.instance().sum(2,2)).toBe(4);
});
});
我收到了这个错误:
TypeError: wrapper.instance(...).sum is not a function
我知道为什么会这样,但我不知道如何解决它。
答案 0 :(得分:3)
问题是你是浅层渲染注入组件。因为它是一个包装组件(Hoc),所以你根本不测试自己的组件。您应该渲染和测试TestContainer
,而不是渲染和测试TestContainer.wrappedComponent
。有关详细信息,请参阅:https://github.com/mobxjs/mobx-react#testing-store-injection