我们如何为嵌套函数编写单元测试用例(Jasmine)?

     2023-03-16     201

关键词:

【中文标题】我们如何为嵌套函数编写单元测试用例(Jasmine)?【英文标题】:How do we write Unit test cases (Jasmine) for nested functions? 【发布时间】:2017-05-29 02:51:47 【问题描述】:

我正在为以下场景编写一个测试用例。代码覆盖率没有完全覆盖。不知道能不能写。如果我问任何错误的方法,请指导我为这种情况编写一个测试用例,并在将来避免这个问题。至少告诉它可能与否

(function() 
    'use strict';

    angular
        .module('myApp')
        .component("testLockCtrl", 
            templateUrl: 'wwwroot/html/myLocation/testLock.html',
            controller: 'testLockCtrl as vm'
        )
        .controller("testLockCtrl", testLockCtrl);

    testLockCtrl.$inject = ['SessionService', 'HttpRequestSoapAPI'];
    /*Parent Controller*/
    function testLockCtrl($rootScope, $mdDialog) 

         vm.ChangeDataController=ChangeDataController;
        /*childer controller*/
        function ChangeDataController($scope) 
            $scope.tempData = true;
           /*following functions (child of change data controller) can  called in click*/
            $scope.editData = function() 

                $scope.tempData = false;
            


            $scope.editDatas = function() 

                /*some code*/
            

        

        function addData() 
            TC$DialogMgr.tag(function(tagID) 
                $mdDialog.show(
                    locals:  testCase: vm ,
                    controller: ChangeDataController,
                    parent: angular.element(document.body),
                    templateUrl: "wwwroot/html/myLocation/addData.html",
                    clickOutsideToClose: true,
                    preserveScope: true,
                    controllerAs: 'vm'
                ).then(function() 

                , function() 

                ).finally(function() 
                    TC$DialogMgr.unTag(tagID);
                );
            , TC$DialogMgr.type.Input);
        
    

)();

it("Should check if Module Flag status is received", function () 
        var data = [ loc: 'mde', Status: -1 ];
        testLockCtrl.ChangeDataController(data);
        var testData=testLockCtrl.editDatas ()
        expect(testData).toBeDefined();

    )

上面是我的测试用例,它可以覆盖子控制器,而不是它的嵌套函数。我们可以从controller.js文件访问测试用例中的范围变量吗?而且代码覆盖率仅涵盖 ChangeDataController 函数,而不是其内部函数。请帮我写一个测试用例并清除我的疑问。

【问题讨论】:

正如答案所暗示的,每个应该被监视或模拟的函数都应该作为范围(或控制器)方法公开。 嗨,我已经更新了我的代码。你能试试看我做错了什么吗? 您没有公开 addData 作为方法,并且 editDatas 出于某种原因在 ChangeDataController 中设置。完全没有理由在组件中使用 $scope,这是反模式。 【参考方案1】:

答案是您应该公开这些内部函数或间接测试它们。无论在哪里调用 addData 方法,您都可以确保您已经测试过该函数并将不同的参数传递给调用函数。

或者,如果您将addData 添加到$scope,您可以更轻松地进行测试:

$scope.addData = function()  /* ... */ ;

在你的测试中:

var result = controller.addData(...);
expect(result).toBe(expected);

【讨论】:

我试过同样的方法,但我不能。我更新了我的代码,你能看到吗?

如何使用 Jasmine 为以下 javascript 函数编写单元测试用例

】如何使用Jasmine为以下javascript函数编写单元测试用例【英文标题】:HowtowriteUnitTestCaseforbelowjavascriptfunctionusingJasmine【发布时间】:2019-04-1303:24:37【问题描述】:如何使用Jasmine为下面的javascript函数编写单元测试用例?functionGetURL... 查看详情

如何为 JWT 策略编写单元测试用例

】如何为JWT策略编写单元测试用例【英文标题】:HowtowriteunittestcaseforJWTstrategy【发布时间】:2020-09-1909:05:55【问题描述】:我是新来的passport.js,并试图涵盖我的JWT策略的单元测试用例。任何人都可以建议如何做到这一点?//Setup... 查看详情

Spring Boot:如何为删除其余模板编写单元测试用例

】SpringBoot:如何为删除其余模板编写单元测试用例【英文标题】:Springboot:Howtowriteunittestcasefordeleteresttemplate【发布时间】:2020-11-2120:51:14【问题描述】:我正在尝试为HttpHandler类编写单元测试用例,该类具有用于删除的其余模板... 查看详情

AngularJS – 如何在 Jasmine 中为输入事件指令编写单元测试

】AngularJS–如何在Jasmine中为输入事件指令编写单元测试【英文标题】:AngularJS–howtowriteunit-testinJasmineforentereventsdirective【发布时间】:2014-09-1516:45:23【问题描述】:我在AngularJS中创建了enterevent指令,所以我想为该指令运行测试... 查看详情

我们如何为 Socket 连接编写测试用例

】我们如何为Socket连接编写测试用例【英文标题】:HowcanwewritetestcasesforSocketconnections【发布时间】:2022-01-1723:32:37【问题描述】:下面是代码sn-p,必须测试Socket连接的真假场景。publicbooleanpingHost(Stringhostname,intport)try(Socketsocket=new... 查看详情

编写 Karma-Jasmine 单元测试用例时出现“错误:没有路由器提供程序”

】编写Karma-Jasmine单元测试用例时出现“错误:没有路由器提供程序”【英文标题】:"Error:Noproviderforrouter"whilewritingKarma-Jasmineunittestcases【发布时间】:2017-04-2211:51:04【问题描述】:我们已经完成了一个angular2项目设置,并... 查看详情

如何在 Angular 7 中使用 Karma/Jasmine 为 App_Initializer 编写单元测试用例

】如何在Angular7中使用Karma/Jasmine为App_Initializer编写单元测试用例【英文标题】:howtowriteunittestcasesforApp_InitializerusingKarma/Jasmineinangular7【发布时间】:2019-06-3002:41:22【问题描述】:我已经在我的app.module.ts文件中导入了APP_INITIALIZER... 查看详情

如何为委托方法编写 GHunit 测试用例?

...elegateMethods?【发布时间】:2012-12-0617:24:07【问题描述】:我们可以为委托方法编写GHunit测试吗?我有一个委托方法,我正在尝试为该委托方法编写GHUnit测试。【问题讨论】:【参考方案1】:这取决于您要如何测试委托方法。如... 查看详情

如何使用 Kafka Streams 为应用程序编写单元测试用例

...ingKafkaStreams【发布时间】:2021-08-2114:52:06【问题描述】:我们正在构建一个将使用KafkaStreams的应用程序。我们正在寻找示例示例,该示例向我们展示了如何为场景编写测试用例,其中我们从Kafka拓扑中调用外部服务。基本上需要... 查看详情

java示例代码_我们如何为涉及与DB连接的方法编写单元测试

java示例代码_我们如何为涉及与DB连接的方法编写单元测试 查看详情

如何为登录屏幕ios swift编写测试用例?

...建测试用例。需要示例来启动测试用例。我是swift新手,我们将不胜 查看详情

Jasmine 中的单元测试用例

】Jasmine中的单元测试用例【英文标题】:UnitTestcaseinJasmine【发布时间】:2016-02-1203:21:33【问题描述】:我正在尝试为循环中的if条件编写一个测试用例,但是我没有将它作为过滤器的一部分。有什么方法可以测试循环中的if条件... 查看详情

如何为 UserDefaults 编写单元测试

】如何为UserDefaults编写单元测试【英文标题】:HowtowriteUnitTestforUserDefaults【发布时间】:2020-01-2202:08:59【问题描述】:我有2个函数,其中一个基本上检索用户默认值中的字符串,另一个将字符串写入用户默认值中。我无法理解... 查看详情

如何为使用两个数据库(mysql和mongo)的django项目编写单元测试

】如何为使用两个数据库(mysql和mongo)的django项目编写单元测试【英文标题】:Howtowriteunittestfordjangoprojectthatusingtwodatabase(mysqlandmongo)【发布时间】:2021-06-1006:04:54【问题描述】:我的django项目使用两种类型的数据库(mariadb和mong... 查看详情

如何为更长的网页编写 UI 手动测试用例?

】如何为更长的网页编写UI手动测试用例?【英文标题】:HowtowriteUImanualtestcaseforlongerwebpage?【发布时间】:2017-05-2312:26:32【问题描述】:我要为Web应用程序的主页编写UI测试用例。主页很长。如何为主页编写手动UI测试用例?这... 查看详情

如何为以下异常处理代码编写junit测试用例?

】如何为以下异常处理代码编写junit测试用例?【英文标题】:Howtowritejunittestcasesforbelowexceptionhandlingcode?【发布时间】:2021-12-1309:27:08【问题描述】:@PostMapping("/addCompany")publicCompanycreateCompany(@Valid@RequestBodyCompanycompany,Errorserrors)if( 查看详情

如何为 Spring 托管 bean 编写 Junit 测试用例?

】如何为Spring托管bean编写Junit测试用例?【英文标题】:HowtowriteJunittestcasesforSpringmanagedbean?【发布时间】:2017-01-1810:21:26【问题描述】:我是JUnit和Spring的新手。我有一个无法编写测试用例的Springbean。但是服务(业务),数据库... 查看详情

如何为 Rest 模板编写 Mockito Junit 测试用例?

】如何为Rest模板编写MockitoJunit测试用例?【英文标题】:HowtowriteMockitoJunittestcasesforResttemplate?【发布时间】:2019-06-2100:41:03【问题描述】:从服务中我使用RestTemplate调用第三方api。@RunWith(MockitoJUnitRunner.class)publicclassForceServiceTest@I... 查看详情