0

この行の引数として「$scope」を渡していない角度アプリでコントローラーを使用しています。

angular.module('module').controller('MyCtrl',function() {var myCtrl = this; myCtrl.bookingId = 1}

問題は、私がオンラインで見たジャスミンのすべてのテストがテストに「$scope」を使用していることです。例えば、

expect($scope.bookingId).toEqual(1);

しかし、コントローラーでスコープを使用していないため、スコープを使用できません。期待を使用してbookingIdの値を確認するにはどうすればよいですか? この点で私を助けてください。

/より明確にするために編集/

これは私のコントローラーです:

angular.module('myModule').controller('MyCtrl',
['MyService', '$window', '$timeout', function(MySrv, $window, $timeout) {
    var MyCtrl= this
    MyCtrl.bookingId = 0;

そして、これは私のテストです:

describe('MyCtrlTest', function () {

beforeEach(module('myModule'));
//beforeEach(angular.mock.module('myModule'));
var $controller,  $_jspBookingUid, MyServiceMock, $scope, $ctrl;

beforeEach(inject(function(_$controller_, $rootScope, _$jspBookingUid_){
    $controller = _$controller_;
    $_jspBookingUid = _$jspBookingUid_;
    MyServiceMock = {
        getBookingId: function(){

        }

    };
    spyOn(MyServiceMock, 'getBookingId').and.returnValue(1);

    //$scope = $rootScope.$new();

    $ctrl = $controller('MyCtrl', {MyService: MyServiceMock});
}));

it('should call MyService.getBookingId() once', function() {
    expect(MyServiceMock.getBookingId).toHaveBeenCalled();
    expect(MyServiceMock.getBookingId.calls.count()).toEqual(1);
});

it('should attach bookingId to the scope(Controller)', function() {
    expect($ctrl.bookingId).toEqual(1);
});

});

4

1 に答える 1

0

$controllerservice は新しいコントローラ インスタンスを返します。そして、それは

var ctrl = $controller('MyCtrl');
expect(ctrl.bookingId).toEqual(1);
于 2016-01-05T09:46:55.630 に答える