用 angularjs karma 和 jasmine 编写 TDD

Posted

技术标签:

【中文标题】用 angularjs karma 和 jasmine 编写 TDD【英文标题】:Write TDD in angularjs karma and jasmine 【发布时间】:2017-04-28 12:08:34 【问题描述】:

我正在使用 karma 和 jasmine 编写我的应用程序的测试用例。我是单元测试的新手。这是我的代码:

$scope.$watch('filterParams.statusModel', function() 
        $scope.customFilters.statusArray = customFilters.statusArray.filter(function(_i) 
            var _x = $scope.filterParams.statusModel.toLowerCase();
            if (_i.value.toLowerCase().indexOf(_x) !== -1) 
                return true;
            
            return false
        )
    );

测试用例是:

it('\n Watch function fire continously', function () 
                scope.customFilters = 
                statusArray: [value:'Active',value:'InActive'],
                status:['active':true,'InActive':true]
            
            scope.filterParams = ;
            scope.filterParams.statusModel = 'Active'
            scope.$apply()
            scope.filterParams.statusModel = 'InActive'
            scope.$apply()
        );

它没有显示任何错误并且测试用例成功运行,但是在代码覆盖率中它显示为红色,这意味着您的代码没有被覆盖

【问题讨论】:

【参考方案1】:

您没有任何expects,所以也许这就是您的代码覆盖率没有增加的原因。 你应该有这样的东西:

expect(scope.customFilters.statusArray).toBe([value: "Active"]);

【讨论】:

以上是关于用 angularjs karma 和 jasmine 编写 TDD的主要内容,如果未能解决你的问题,请参考以下文章

Karma + Jasmine 下 angular.mock.inject 的 TypeScript AngularJS 控制器测试问题

Angularjs 基于karma和jasmine的单元测试

茉莉花匹配器功能未在 angularjs/karma 单元测试中加载

在Visual Studio 2013中使用Jasmine + Karma进行AngularJS测试

使用 karma-coverage 和 angularjs 对每个源文件进行代码覆盖

[Unit Testing] AngularJS Unit Testing - Karma