event - angularjs dynamic title



在茉莉花測試中未公佈的控制器 (1)

我有一個茉莉花測試以下代碼。 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

可能是什麼原因?

https://src-bin.com


Answer #1

c0bra和Ye Lio在這裡都有不錯的一面。

c0bra是正確的,因為你沒有調用karma / jasmine helper方法'module'來包含包含'ProjectConfigurationCtrl'的模塊。

你需要添加如下內容:

beforeEach( module( 'module.containing.ProjectConfigurationCtrl' ) );

如果你不這樣做,在運行上面的腳本時,你會得到如下錯誤:

錯誤:[ng:areq]參數'ProjectConfigurationCtrl'不是一個函數,得到了undefined

然而,你所看到的錯誤“TypeError:controllerToTest不是一個函數”表明,某種方式controllerToTest被設置在別的東西,而不是一個函數。

如果這些都不能解決您的問題,請發布一個新的完整版本的測試w /上述建議。





karma-runner