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 函数编写单元测试用例
如何使用 Angular 4 Jasmine 单元测试用例覆盖 IF/ELSE 条件
如何在 Angular 7 中使用 Karma/Jasmine 为 App_Initializer 编写单元测试用例