2016-02-10 65 views
0

使用噶,我回來的一個項目填補測試(別人寫的程序角 - 我有「悅」)......

項目寫成的CoffeeScript。

我有以下茉莉測試:

'use strict' 

describe 'module:file:controller',() -> 
    $controller = null 
    $scope = null 
    $state = null 
    $stateParams = null 
    Page = null 
    File = null 

    beforeEach (module 'forge') 

    beforeEach inject(($rootScope, _$controller_, _$state_, _$stateParams_, _Page_, _File_) -> 
    $scope = $rootScope.$new() 
    $state = _$state_ 
    $stateParams = _$stateParams_ 
    Page = _Page_ 
    File = _File_ 
    $controller = _$controller_ 
) 

    describe 'init',() -> 
    controller = null 

    beforeEach() -> 
     $state = {} 
     $stateParams = {} 
     controller = $controller('fileController', {$scope: $scope, $state: $state, $stateParams: $stateParams, Page: Page, File: File}) 

    it 'should set page title to File',() -> 
     spyOn(Page, 'title') 

     expect(Page.title).toHaveBeenCalledWith 'Files' 

    it 'should do something with delete',() -> 
     spyOn(Page, 'addAlert') 

     $scope.delete(1) 

     expect(Page.addAlert).toHaveBeenCalled() 

這裏是控制器:

forge.controller 'fileController', ($scope, $state, $stateParams, Page, File) -> 

    # Inject base controller 
    $injector.invoke BaseController, this, { $scope: $scope, Factory: File } 

    # Set page title 
    Page.title 'Files' 

    console.log $stateParams 
    console.log $state 

    # Delete 
    $scope.delete = (id) -> 

    Page.addAlert 'success', '[TEST] Deleting file...' 

    console.log $stateParams 
    console.log $state 

    # Delegate actions 
    switch $stateParams.action 
    when 'delete' then $scope.delete $stateParams.id 

我有一堆的單元測試運行良好。該應用程序使用grunt構建,所有代碼都編譯到/dist/assets/js/app.js中。

我的人緣配置:

module.exports = (config) -> 
    config.set 

    files: [ 
     '../../dist/assets/js/app.js' 
     '../../bower_components/angular-mocks/angular-mocks.js' 
     'unit/**/**.test.coffee' 
     '../module/**/test/unit/**/*.unit.coffee' 
    ] 

    preprocessors: 
     'unit/**/**.test.coffee': ['coffee'] 
     '../module/**/test/unit/**/*.unit.coffee': ['coffee'] 

    frameworks: ['jasmine'] 

    reporters: ['progress'] 

    browsers: ['Chrome', 'Firefox', 'Safari'] 

    logLevel: 'ERROR' 

    jasmineNodeOpts: 
     onComplete: null 
     isVerbose: false 
     showColors: true 
     includeStackTrace: false 
     defaultTimeoutInterval: 30000 

當我運行測試,我收到:

Chrome 48.0.2564 (Mac OS X 10.11.3) module:file:controller init should set page title to File FAILED 
    ReferenceError: $injector is not defined 
    at new <anonymous> (/Users/usr1/repos/proj/dist/assets/js/forge.js:75397:3) 
    at Object.instantiate (/Users/usr1/repos/proj/dist/assets/js/forge.js:14449:14) 
    at /Users/usr1/repos/proj/dist/assets/js/forge.js:19700:28 
    at /Users/usr1/repos/proj/bower_components/angular-mocks/angular-mocks.js:2170:12 
    at Object.<anonymous> (/Users/usr1/repos/proj/src/module/file/test/unit/controller/file-controller.unit.js:25:27) 
    Expected spy title to have been called with [ 'Files' ] but it was never called. 
    at Object.<anonymous> (/Users/usr1/repos/proj/src/module/file/test/unit/controller/file-controller.unit.js:35:33) 
Chrome 48.0.2564 (Mac OS X 10.11.3) module:file:controller init should do something with delete FAILED 
    ReferenceError: $injector is not defined 
    at new <anonymous> (/Users/usr1/repos/proj/dist/assets/js/forge.js:75397:3) 
    at Object.instantiate (/Users/usr1/repos/proj/dist/assets/js/forge.js:14449:14) 
    at /Users/usr1/repos/proj/dist/assets/js/forge.js:19700:28 
    at /Users/usr1/repos/proj/bower_components/angular-mocks/angular-mocks.js:2170:12 
    at Object.<anonymous> (/Users/usr1/repos/proj/src/module/file/test/unit/controller/file-controller.unit.js:25:27) 
TypeError: $scope.delete is not a function 
    at Object.<anonymous> (/Users/usr1/repos/proj/src/module/file/test/unit/controller/file-controller.unit.js:39:23) 
Chrome 48.0.2564 (Mac OS X 10.11.3): Executed 63 of 63 (2 FAILED) (1.155 secs/1.134 secs) 

檢查了所有的路徑,而且控制器presentin德建app.js文件。

現在不知道爲什麼這個消息仍然存在,任何指針都會很好。

+0

'forge.controller'應該有'在功能 –

+0

$ injector'依賴它可能更容易地運行你對unminified /未結合的代碼測試,這樣你就不必通過75000行代碼挖。 –

回答