我应该测试相反的情况吗?
Should I test contrary cases?
我正在使用 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>
)
}
}
您应该至少对被测单元进行尽可能多的(可区分的)状态测试。如果有两种状态(isLoading 为 true 或 false),那么您还需要两个测试,每个可能的状态一个。
换句话说更正式:一个单元的测试次数应该大于或等于该单元的圈复杂度。
我正在使用 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>
)
}
}
您应该至少对被测单元进行尽可能多的(可区分的)状态测试。如果有两种状态(isLoading 为 true 或 false),那么您还需要两个测试,每个可能的状态一个。
换句话说更正式:一个单元的测试次数应该大于或等于该单元的圈复杂度。