Javascript Can';t达到';这';在角的因果报应测试中

Javascript Can';t达到';这';在角的因果报应测试中,javascript,angularjs,jasmine,karma-runner,Javascript,Angularjs,Jasmine,Karma Runner,我正在做一个小项目,目前在使用这个超过$scope时遇到了一个问题。我不确定哪一个是最好的,但我并没有陷入困境,因为当我编写茉莉花测试时,karma不会在我的控制器中找到“这个”。以下是我的jasmine测试代码: 'use strict'; describe('PhoneListCtrl', function() { beforeEach(module('phoneCtrlModule')); it('should create "phones" model with

我正在做一个小项目,目前在使用这个超过$scope时遇到了一个问题。我不确定哪一个是最好的,但我并没有陷入困境,因为当我编写茉莉花测试时,karma不会在我的控制器中找到“这个”。以下是我的jasmine测试代码:

'use strict';
 describe('PhoneListCtrl', function() {
     beforeEach(module('phoneCtrlModule'));

      it('should create "phones" model with 3 phones', inject(function($controller){
         var scope = {},
             ctrl = $controller('PhoneListCtrl', {$scope:scope});
      expect(scope.phones.length).toBe(3);
      }));
 });
这是角度控制器本身:

(function () {
    var app = angular.module('phoneCtrlModule', []);

    app.controller('PhoneListCtrl', function() {
       this.phones = [
           {'name': 'Nexus S',
            'snippet': 'Fast just got faster with Nexus S.'},
           {'name': 'Motorola XOOM™ with Wi-Fi',
            'snippet': 'The Next, Next Generation tablet.'},
           {'name': 'MOTOROLA XOOM™',
            'snippet': 'The Next, Next Generation tablet.'}
        ];
    });

 })();

我试过让$scope等于这个。但它不起作用。我对如何在karma测试中访问PhoneListCtrl.phones感到有点困惑。

关键字此处表示控制器本身。 您可以在测试用例中使用this.phones作为

phoneCtrlModule.phones

替代方案是:

var范围

beforeach(注入(函数($rootScope,$Controller){

})))


期望(范围、电话、长度)、toEqual(3)

你需要检查
ctrl.phones.length
谢谢,就这样。愚蠢的我试图把一切都复杂化。
$scope=$rootScope.$new();

var ctrl = $controller('phoneCtrlModule', {
        $scope: scope
    });