【问题标题】:Should I test contrary cases?我应该测试相反的情况吗?
【发布时间】:2018-06-18 18:10:58
【问题描述】:

我正在使用 tdd,但我不确定我应该测试相反的情况还是只测试预期的情况。

测试 1

test('should render loading placeholder if isloading = true', () => {
    const wrapper = shallow(
      <OrderDetails id="10" />
    );
    wrapper.setState({ isLoading: true });
    expect(wrapper.find(LoadingPlaceholder).length).toBe(1);
})

测试 2

test('should not render loading placeholder if isloading = false', () => {
    const wrapper = shallow(
      <OrderDetails id="10" />
    );
    wrapper.setState({ isLoading: false});
    expect(wrapper.find(LoadingPlaceholder).length).toBe(0);
})

组件

export default class OrderDetails extends PureComponent {
  state = {
    isLoading: true,
  }
  props: Props;
  render() {
    return (
      <div>
        {this.state.isLoading && (
           <LoadingPlaceholder />
        )}
      </div>
    )
  }
}

注意如果只添加第一个测试可以通过这个测试,例如 意外通过测试

export default class OrderDetails extends PureComponent {
  state = {
    isLoading: true,
  }
  props: Props;
  render() {
    return (
      <div>
         <LoadingPlaceholder />
      </div>
    )
  }
}

【问题讨论】:

  • 您想测试您的代码是否能够处理意外情况。如果可能发生某些事情,例如从您的银行帐户中提取更多的钱,那么您希望生成错误或异常。此代码应编写 TDD 测试以确保其正常工作。

标签: reactjs unit-testing testing tdd jestjs


【解决方案1】:

对于被测单元,您应该至少有尽可能多的测试(可区分的)状态。如果有两种状态(isLoading 为 true 或 false),那么您还需要两个测试,一个用于每个可能的状态。

换一种说法,更正式一点:一个单元的测试次数应该大于或等于该单元的圈复杂度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    相关资源
    最近更新 更多