模拟时如何在笑话和酶的阶段测试“状态”的变化?

时间:2018-12-31 01:55:59

标签: react-native jestjs enzyme

我们如何在一个阶段中测试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始终为假。如何监视从falsetrue的变化?

1 个答案:

答案 0 :(得分:0)

  

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

我们没有。这样做将:

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

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