当前位置:  开发笔记 > 程序员 > 正文

TypeError:$ controller不是函数 - 使用jasmine的angularjs

如何解决《TypeError:$controller不是函数-使用jasmine的angularjs》经验,为你挑选了1个好方法。

我正在尝试使用Jasmine为AngularJS应用程序设置测试.它遵循文档,但有点简单.该小提琴具有下面的代码:

angular.module('myapp', [])
  .controller('MyCtrl', ['$scope', function MyCtrl($scope) {
    $scope.greeting = "hello";
  }]);

describe('My controller', function() {
  var $controller;
  module('myapp');
  inject(function(_$controller_) {
    $controller = _$controller_;

  });

  it('greets', function() {
    var $scope = {};
    var controller = $controller('MyCtrl', {
      $scope: $scope
    });
    expect($scope.greeting).toEqual('hello');
  })

});

并且Jasmine报告错误: TypeError: $controller is not a function.

如何更正代码以摆脱此错误并能够测试控制器?



1> dfsq..:

您需要实例化app模块并$controller使用beforeEach块注入每个测试:

describe('My controller', function() {
    var $controller;

    beforeEach(module('myapp'));

    beforeEach(inject(function(_$controller_) {
        $controller = _$controller_;
    }));

    it('greets', function() {
        var $scope = {};
        var controller = $controller('MyCtrl', {
            $scope: $scope
        });
        expect($scope.greeting).toEqual('hello');
    })

});

演示: https ://jsfiddle.net/f5ebb55f/6/

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有