【问题标题】:How to test `state` changes in stage in jest and enzyme when simulate?模拟时如何在笑话和酶的阶段测试“状态”变化?
【发布时间】:2018-12-31 01:55:59
【问题描述】:

我们如何在一个阶段测试state 变量的变化,这意味着我想测试的不是最终结果,而是两者之间的结果。

下面是我要测试的代码。

onLogin = () => {
    this.setState({ isLoggingIn: true }, () => {
        try {
        } catch (err) {
          // Alert.alert(getString('ERROR'), err.message);
        } finally {
            this.setState({ isLoggingIn: false });
        }
    });
}

下面是我的测试代码。

it('should call onLogin callback', () => {
    const spy = jest.spyOn(wrapper.instance(), 'onLogin');
    const loginBtn = wrapper.find('#login');
    loginBtn.props().onPress();
    expect(spy).toHaveBeenCalled();
    expect(wrapper.instance().state.isLoggingIn).toEqual(false);
    // Attempt => Below I've tried
    // wrapper.update();
    // expect(wrapper.instance().state.isLoggingIn).toEqual(true);
    // wrapper.update();
    // expect(wrapper.instance().state.isLoggingIn).toEqual(false);

wrapper.instance().state.isLoggingIn 始终为假。如何监控对false 然后true 的更改?

【问题讨论】:

    标签: react-native jestjs enzyme


    【解决方案1】:

    我们如何测试状态变量的变化

    我们没有。这样做会:

    1. 降低测试的可维护性
    2. 测试中硬编码state 结构:因此即使一切正常,单元测试也会失败(更多不必要的工作)
    3. 仍然让我们不确定它是否有效。

    只需测试render() 结果并与它返回的所有内容进行交互。这样您就可以测试真正重要的内容。

    【讨论】:

    • 嗯。报道告诉我,这条线的测试很艰难。
    • 具体是哪一行?
    • 糟糕,抱歉。是的,这条线已经被覆盖而没有这样做。对不起,我搞错了。
    猜你喜欢
    • 2019-04-05
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2019-04-13
    相关资源
    最近更新 更多