【问题标题】:error by injecting the control unit tests the angular通过注入控制单元测试角度错误
【发布时间】:2015-04-05 07:47:58
【问题描述】:

我在使用 jasmine 和 karma 创建 Angular 测试时遇到问题。如果你能帮助我,我很感激。 控制台记录 Error: [$ injector: modulerr] 并带有一个链接,该链接声称是一个错误,当模块由于某些异常而无法加载时会出现该错误。

在业力配置文件中:

files: [
    'bower_components/angular/angular.min.js',  
    'bower_components/angular-route/angular-route.min.js', 
    'node_modules/angular-mocks/angular-mocks.js',
    'www/lib/masks.min.js',
    'www/lib/ui-utils-mask.js',
    'www/js/app.js', 'www/js2/*.js',
    'tests/*.test.js' 
],

我的测试:

describe('Register', function () {
    beforeEach(angular.mock.module('app', ['onsen', 'ui.utils.masks']));
    var $controller;
    beforeEach(inject(function (_$controller_) {
        $controller = _$controller_;
    }));
    describe('bla bla bla', function () {
        it('tesye ', function () {
            var $scope = {};
            console.log("$controler: " + $controller);
        });
    });
});

如果我注释第 4 行和第 5 行(beforeEach),不会发生同样的错误,但属性 'controller' 未定义。

【问题讨论】:

    标签: angularjs node.js unit-testing jasmine karma-runner


    【解决方案1】:

    我认为您没有按预期使用 $controller。 它应该只用于加载你想像这样测试的控制器:

    var ctrl, $scope;
    beforeEach(inject(function ($controller, _$rootScope_){
        $scope = _$rootScope.$new();
        ctrl = $controller('MyCtrl', {$scope: $scope});
    }));
    describe('bla bla bla', function () {
        it('tesye ', function () {
            console.log("ctrl" + ctrl);
            console.log("My controller scope "+$scope);
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 2023-01-22
      相关资源
      最近更新 更多