Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在功能组件中测试功能_Javascript_Reactjs_React Native_Jestjs_React Test Renderer - Fatal编程技术网

Javascript 在功能组件中测试功能

Javascript 在功能组件中测试功能,javascript,reactjs,react-native,jestjs,react-test-renderer,Javascript,Reactjs,React Native,Jestjs,React Test Renderer,我已经创建了一个卡组件,并为此编写了测试用例,但在查看测试覆盖率数字时,我发现该组件的分支覆盖率为50%。测试用例中缺少的部分是onPress函数中其他部分的测试 问题1。如何测试此缺失部分并增加覆盖率 问题2。如何单独测试卡组件的onPress功能 const卡=(道具)=>{ const onPress=()=>{ 如果(props.onPress)props.onPress(); }; 返回( ); }; 导出默认卡; 您有两种情况: 定义了props.onPress,因此到达if下的代码

我已经创建了一个卡组件,并为此编写了测试用例,但在查看测试覆盖率数字时,我发现该组件的分支覆盖率为50%。测试用例中缺少的部分是onPress函数中其他部分的测试

问题1。如何测试此缺失部分并增加覆盖率

问题2。如何单独测试卡组件的onPress功能

const卡=(道具)=>{
const onPress=()=>{
如果(props.onPress)props.onPress();
};
返回(
);
};
导出默认卡;

您有两种情况:

  • 定义了props.onPress,因此到达if下的代码
  • 未定义props.onPress,因此未定义if下的代码
  • Props是一个可以控制的变量,因此可以根据需要传递Props。只要通过这两个场景的道具,你就具备了所需的条件

    我认为您不需要单独测试onPress函数。但另一种选择是从组件中删除逻辑

    export const onPress = (props) => () => {
        if (props.onPress) {
            props.onPress()
        }
    }
    
    const Card = (props) => {
    
        return (<TouchableWithoutFeedback onPress={onPress(props)}>
            <View style={[Style.body, { width: props.width, height: props.height }]}>
                <ImageBackground source={{ uri: props.imageUrl }} style={{ width: '100%', height: '100%' }} />
            </View>
        </TouchableWithoutFeedback>);
    };
    
    export default Card;
    
    export const onPress=(道具)=>()=>{
    if(道具onPress){
    props.onPress()
    }
    }
    康斯特卡=(道具)=>{
    返回(
    );
    };
    导出默认卡;
    

    现在已导出onPress功能,可以根据需要进行测试。

    有两种情况:

  • 定义了props.onPress,因此到达if下的代码
  • 未定义props.onPress,因此未定义if下的代码
  • Props是一个可以控制的变量,因此可以根据需要传递Props。只要通过这两个场景的道具,你就具备了所需的条件

    我认为您不需要单独测试onPress函数。但另一种选择是从组件中删除逻辑

    export const onPress = (props) => () => {
        if (props.onPress) {
            props.onPress()
        }
    }
    
    const Card = (props) => {
    
        return (<TouchableWithoutFeedback onPress={onPress(props)}>
            <View style={[Style.body, { width: props.width, height: props.height }]}>
                <ImageBackground source={{ uri: props.imageUrl }} style={{ width: '100%', height: '100%' }} />
            </View>
        </TouchableWithoutFeedback>);
    };
    
    export default Card;
    
    export const onPress=(道具)=>()=>{
    if(道具onPress){
    props.onPress()
    }
    }
    康斯特卡=(道具)=>{
    返回(
    );
    };
    导出默认卡;
    

    现在,您已经导出了onPress函数,可以根据需要进行测试。

    编写一个测试,其中
    props.onPress
    是falsy。如果你想单元测试
    onPress
    将它移动到顶层,并使用composition将dep添加到其中。我没有按你的方式。你能给我一个简单的答案或链接吗?写一个测试,
    props.onPress
    是falsy。如果你想单元测试
    onPress
    将它移动到顶层,并使用composition将dep添加到其中。我没有按你的方式。你能给我一个简单的答案或链接吗?案例1我已经测试过了。但是如何测试案例2呢?如果我在onPress中没有通过任何测试,那么我该如何测试呢?正如我所说的,只需操纵道具来定义onPress。如果某些事情在需要的时候没有发生,那么断言也是有价值的。1)你没有通过
    道具。按下
    2)你模拟点击
    touchable而没有反馈
    3)如果某件事情因为未捕获而崩溃,你的测试失败exception@CFLS我同意你的脱钩方法。但是我不确定这是否是我测试过的编写测试用例的最佳实践。但是如何测试案例2呢?如果我在onPress中没有通过任何测试,那么我该如何测试呢?正如我所说的,只需操纵道具来定义onPress。如果某些事情在需要的时候没有发生,那么断言也是有价值的。1)你没有通过
    道具。按下
    2)你模拟点击
    touchable而没有反馈
    3)如果某件事情因为未捕获而崩溃,你的测试失败exception@CFLS我同意你的脱钩方法。但我不确定这是否是编写测试用例的最佳实践