不加载 karma-jasmine 框架中生成的测试用例

Posted

技术标签:

【中文标题】不加载 karma-jasmine 框架中生成的测试用例【英文标题】:Not loading test cases generated in karma-jasmine framework 【发布时间】:2018-11-07 04:52:24 【问题描述】:

我正在尝试为控制器编写一个简单的测试用例,但它也没有给出任何错误,也没有加载我编写的测试用例。

app.js

var myApp = angular.module('myApp',[ 'ui.bootstrap', 'dialogs', 'ui.router','base64','ngtimeago',
        'cfp.loadingBar', 'ngStorage', 'ngCookies', 'ngTable','ngRoute',
        'angularUtils.directives.dirPagination', 'ngSanitize','ngTagsInput',
        'ngIdle','angular.filter','angular-encryption','ngImgCrop']);

loginController.js

myApp.controller("loginController",['$scope','$rootScope','$state','APIServices','$http','$localStorage','cfpLoadingBar','$log','sha256','MFEEDBACK_CONSTANT_MESSAGES',
        function($scope, $rootScope, $state, APIServices, $http,$localStorage,cfpLoadingBar,$log,sha256) 
    var lc = this;
    lc.test = "hello";

loginController.specs.js

describe('Controllers', function()
    beforeEach(module('myApp'));
    describe('loginController', function()
        var loginController;
        beforeEach(inject(function($controller,$rootScope)
            var state,mockStorage,APIService,mockHTTP,mockLoadingBar,log,sha256,messages;
            var mockScope,mockRootScope = $rootScope.$new();
            loginController = $controller('loginController',
                $scope:mockScope,$rootScope:mockRootScope,$state:state,APIServices:APIService,$http:mockHTTP,
                $localStorage:mockStorage,cfpLoadingBar:mockLoadingBar,$log:log,sha256:sha256,MFEEDBACK_CONSTANT_MESSAGES:messages
            );
        ));
        it('testCase1val should be working', function()
            expect(loginController.test).toBe('hello');
        );
    );
);

得到输出“执行 0 of 0 ERROR (0.005 secs / 0 secs)”

【问题讨论】:

【参考方案1】:

我没有添加我在 app.js 文件中的第三方依赖项。 最重要的是我们需要在 'karma.conf.js' 中添加所有必需的第三方 javascript 文件。 然后在您的单元测试用例中添加这些依赖项,我们需要创建模拟 javascript 文件并命名为“ui.router.js”。 并确保该文件应包含以下代码。

'use-strict';
angular.module('ui.router', []);

我们需要为“app.js”文件中声明的每个依赖项创建模拟 javascript 文件,并将这些文件添加到“karma.conf.js”中。然后在加载应用程序模块之前加载它们,如下所示。

beforeEach(function()
   module('ui.router');
   module('ngTagsInput');
   .
   .
   .
   module('all your third party depedencies.');
);
beforeEach(module('myApp'));

【讨论】:

以上是关于不加载 karma-jasmine 框架中生成的测试用例的主要内容,如果未能解决你的问题,请参考以下文章

受益于 Play 中生成的 getter 和 setter!框架

如何使用 Xcode 工作区中生成的框架中的自定义字体

如何在 KMM(kotlin 本机)共享模块中读取 Swift 框架库中生成的对象数组

“您确定要离开此页面吗?”是如何在浏览器中生成的?

jsp中生成的验证码和存在session里面的验证码不一致的处理

QGIS中生成的geoserver中的样式显示不完整