Jasmine 中的单元测试用例

Posted

技术标签:

【中文标题】Jasmine 中的单元测试用例【英文标题】:Unit Test case in Jasmine 【发布时间】:2016-02-12 03:21:33 【问题描述】:

我正在尝试为循环中的 if 条件编写一个测试用例,但是我没有将它作为过滤器的一部分。有什么方法可以测试循环中的 if 条件。我的测试用例根本不执行这行代码。

下面是我的控制器代码

   $scope.init = function()
   
for (var i = 0; i < $scope.tempdata.length; i++)  //mapping of the status   to text

            if ($scope.tempdata[i].Status == 'U') 
                    $scope.statusText = 'text1';

                
                if ($scope.tempdata[i].Status == 'A' || $scope.tempdata[i].Status == 'W') 
                    $scope.statusText = 'text2';
                
                if ($scope.tempdata[i].Status == 'F') 
                    $scope.statusText = 'text3';
                
                if ($scope.tempdata[i].Status == 'P') 
                    $scope.statusText = 'text4';
                
                if ($scope.tempdata[i].Status == 'E') 
                    $scope.statusText = 'text5';
                
                if ($scope.tempdata[i].Status == 'S') 
                    $scope.statusText = 'text6';
                
                  
          

下面是我的测试用例

 it('should set the status', function() 
   scope.responseSet = true;
   var mockTempData =['Status': 'F'];
    scope.tempdata = mockTempData
    scope.init();  
    expect(scope.statusText).toBe(text3);
);

当我运行 karma 时,我的测试用例失败,Expected '' to be text3。

【问题讨论】:

switch($scope.tempdata[i].Status) 看起来会更整洁。另外,你的测试不应该是expect(scope.statusText).toEqual('text3')(如字符串“text3”)吗? 这里好像没问题~plnkr.co/edit/4t8W9APotPwcvzvvuPxQ?p=preview 【参考方案1】:

如果您展示了如何将作用域“注入”到控制器测试中,则更容易判断。但是,我发现调试我的单元测试以仔细地逐步完成它们并确保一切都符合我所期望的每一步是非常有帮助的。

最后一行应该是

expect(scope.statusText).toBe('text3');

请注意,测试代码中的 text3 应更改为“text3”,因为这是实际控制器中的字符串,而不是变量名。

【讨论】:

以上是关于Jasmine 中的单元测试用例的主要内容,如果未能解决你的问题,请参考以下文章

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

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

如何使用 Angular 4 Jasmine 单元测试用例覆盖 IF/ELSE 条件

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

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

如何使用 angular9 和 Jasmine 为所有组件生成 .pdf 格式的单元测试用例代码覆盖率报告