首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果条件语句为Jquery - Jasmine - AngularJs,则无法完成代码覆盖率

如果条件语句为Jquery - Jasmine - AngularJs,则无法完成代码覆盖率
EN

Stack Overflow用户
提问于 2015-04-23 18:47:57
回答 2查看 1.5K关注 0票数 0

我的项目是用angular编写的,用Jasmine编写测试用例。这些测试用例与Karma一起运行。

我在控制器中有一个作用域函数,里面有一个if条件。此if条件语句在Jquery中。我不确定如何测试这段代码的if和else部分。

代码语言:javascript
运行
复制
$scope.getHelperMessage = function(type, target) {  
        $scope.helperMessageHidden = false;     
        $(target).addClass("icon-selected");

        if (type === "password") { // this if condition is covered when I pass type as "password" in the fn args
            $scope.helperMessage = passwordInfoMsg;
        } else if (type === "personal") {
            $scope.helperMessage = personalNumberInfoMsg;
        } else if (type === "email") {
            if ($(".email-wrapper .error-icon").css('display') === 'none') { // this if condition is not covered as i dont know how to set this statement in my test case
                $scope.helperMessageHidden = true;
            } else {
                $(".form-message-container p").html(alreadyRegisteredInfoMsg);
            }               
        }
    }

下面是我对上述作用域函数的测试用例

代码语言:javascript
运行
复制
describe('on focus of any input field', function() {    

        it('should show the password helper message', inject( function(passwordInfoMsg){ 
            var type = "password";
            var target = ".password-wrapper .info-icon";            
            scope.getHelperMessage(type, target);
            expect(scope.helperMessageHidden).toBe(false);
            expect(scope.helperMessage).toBe(passwordInfoMsg);
        }));    

        it('should show the personal number helper message', inject( function(personalNumberInfoMsg){ 
            var type = "personal";
            var target = ".personal-wrapper .info-icon";
            scope.getHelperMessage(type, target);
            expect(scope.helperMessageHidden).toBe(false);
            expect(scope.helperMessage).toBe(personalNumberInfoMsg);    
        }));    

        it('should show the already exists email helper message', inject( function(alreadyRegisteredInfoMsg){ 
            var type = "email";
            var target = ".email-wrapper .error-icon"; // here I dont know how to set the value for if condition            
            scope.getHelperMessage(type, target);
            expect(scope.helperMessageHidden).toBe(false);
        }));
});

EN

Stack Overflow用户

发布于 2015-04-23 23:40:58

为了测试,有没有可能用一个模拟来覆盖jQuery css函数,以返回您想要的值?例如:

代码语言:javascript
运行
复制
it('should show the already exists email helper message', inject( function(alreadyRegisteredInfoMsg){ 
    var type = "email";
    var target = ".email-wrapper .error-icon";
    $.fn.css = function() {return "none";}; //make $(...).css(...) === "none"
    scope.getHelperMessage(type, target);
    expect(scope.helperMessageHidden).toBe(false);
}));
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29821196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档