2016-11-16 22 views
1
describe("App defination", function() { 
beforeEach(module('app')); 
    var MainCtrl, scope; 

describe("ModuleTwo", function() { 

    beforeEach(inject(function($controller,$rootScope){ 
      scope= $rootScope.$new(); 
      MainCtrl =$controller('TestCtrl',{ $scope: scope}); 
    })); 
     it("check scope", function() { 
       expect(scope).toBeDefined(); 
     }); 
    }); 


}); 

我無法訪問該塊中的作用域。它給我錯誤,如「預計未定義到定義」。當我將TestCtrl重命名爲anystring時,它根本不影響茉莉花。爲什麼會發生?如何在業力中注入控制器?

回答

0

它適合我。檢查你的模塊是否爲appApp

angular.module('App', []); 
 

 
angular.module('App').controller('TestCtrl', function($scope) { 
 
}); 
 

 
describe("App", function() { 
 
    beforeEach(module('App')); 
 
    
 
    var MainCtrl, scope; 
 
    describe("TestCtrl", function() { 
 
    beforeEach(inject(function($controller, $rootScope){ 
 
     scope = $rootScope.$new(); 
 
     MainCtrl = $controller('TestCtrl', { $scope: scope }); 
 
    })); 
 
    it("should have a scope", function() { 
 
     expect(scope).toBeDefined(); 
 
    }); 
 
    }); 
 
});
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.5.2/jasmine.css"> 
 

 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.5.2/jasmine.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.5.2/jasmine-html.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.5.2/boot.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular-mocks.js"></script>

0

有兩件事情你需要做的:

1)添加一個參考控制器和兩個角/角模擬在karma.conf.js

files: [ 
     './node_modules/angular/angular.js',        // angular 
     './node_modules/angular-mocks/angular-mocks.js',     // angular-mocks 
     './app/views/js/controllers/sugestionController.js', // <---- your controller name 
     './test/**/*.js' 
    ], 

2)在測試文件中,您必須注入模塊和控制器:

beforeEach(angular.mock.module('socialMeal')); //<---- module injection 

var $controller; 
var sugestionController; 

beforeEach(angular.mock.inject(function(_$controller_){ //<---- controller injection 
    $controller = _$controller_; 
    sugestionController = $controller('SugestionController', {}); 
}));