测试Mobx注入组件

时间:2017-10-03 05:12:07

标签: reactjs mobx

我在使用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

我知道为什么会这样,但我不知道如何解决它。

1 个答案:

答案 0 :(得分:3)

问题是你是浅层渲染注入组件。因为它是一个包装组件(Hoc),所以你根本不测试自己的组件。您应该渲染和测试TestContainer,而不是渲染和测试TestContainer.wrappedComponent。有关详细信息,请参阅:https://github.com/mobxjs/mobx-react#testing-store-injection