angularjs - page - 在茉莉花測試中未公佈的控制器
typescript change page (1)
c0bra和Ye Lio在這裡都有不錯的一面。
c0bra是正確的,因為你沒有調用karma / jasmine helper方法'module'來包含包含'ProjectConfigurationCtrl'的模塊。
你需要添加如下內容:
beforeEach( module( 'module.containing.ProjectConfigurationCtrl' ) );
如果你不這樣做,在運行上面的腳本時,你會得到如下錯誤:
錯誤:[ng:areq]參數'ProjectConfigurationCtrl'不是一個函數,得到了undefined
然而,你所看到的錯誤“TypeError:controllerToTest不是一個函數”表明,某種方式controllerToTest被設置在別的東西,而不是一個函數。
如果這些都不能解決您的問題,請發布一個新的完整版本的測試w /上述建議。
我有一個茉莉花測試以下代碼。 ProjectConfigurationCtrl是我試圖測試的控制器的名稱。
describe('Unit test: ProjectConfiguration controller', function() {
var scope, routeParams, infraService, controllerToTest;
// some stuff declaration skipped...
beforeEach(inject(function($injector) { // get all dependences
routeParams = $injector.get('$routeParams');
infraService = $injector.get('InfraService');
$rootScope = $injector.get('$rootScope');
scope = $rootScope.$new();
scope.projectData = fakedDto;
var $controller = $injector.get('$controller');
controllerToTest = function() {
return $controller('ProjectConfigurationCtrl', { //
'$scope': scope
});
};
}));
// ...
it('saves new project successfully', function() {
var controller = controllerToTest();
// here, I try to call test function in and check results...
scope.clickUpdate(fakedDto); // <-- controller defines this function in given scope, so I hope it runs like this in test.
});
}); // describe block ends
這個代碼結束了錯誤(業力/茉莉花輸出):
minErr/<@C:/src/ClientApp/client/bower_components/angular/angular.js:78
loadModules/<@C:/src/ClientApp/client/bower_components/angular/angular.js:3703
[email protected]:/src/ClientApp/client/bower_components/angular/angular.js:322
[email protected]:/src/ClientApp/client/bower_components/angular/angular.js:3668
[email protected]:/src/ClientApp/client/bower_components/angular/angular.js:3608
[email protected]:/src/ClientApp/client/bower_components/angular-mocks/angular-mocks.js:2144
TypeError: controllerToTest is not a function in C:/src/ClientApp/tests/unit/controllers/projectconfigcontroller.test.js (line 85)
@C:/src/ClientApp/tests/unit/controllers/projectconfigcontroller.test.js:85
可能是什麼原因?