我应该测试相反的案例吗?

时间:2018-01-09 16:37:26

标签: reactjs unit-testing testing tdd jest

我正在使用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);
})

成分<​​/ P>

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>
    )
  }
}

1 个答案:

答案 0 :(得分:1)

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

换句话说,更正式:单位的测试次数应该大于或等于单位的圈复杂度。