2016-04-16 8 views
0

Ich versuche Test für ein ionisches Projekt einzurichten, ich mein Controller-Test haben, wie folgt:Karma/Jasmin nicht ionisches Controller injizieren

describe('ShopsCtrl', function() { 

    var controller; 

    beforeEach(module('shoplocal')); 

    it('should foo', function() { 
    expect(true).toBe(true); 
    }); 

    beforeEach(angular.mock.inject(function($controller) { 
    // instantiate shop controller 
    controller = $controller('ShopsCtrl'); 
    })); 

    it('foo should be bar', function() { 
    expect(controller.foo).toBe('bar'); 
    }); 
}) 

die App Definition wie folgt:

(function() { 
    shoplocalRun.$inject = ['$ionicPlatform', '$rootScope']; 
    function shoplocalRun($ionicPlatform, $rootScope) { 
    $ionicPlatform.ready(function() { 
     // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard 
     // for form inputs) 
     if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) { 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
     cordova.plugins.Keyboard.disableScroll(true); 
     } 

     if (window.StatusBar) { 
     StatusBar.overlaysWebView(true); 
     StatusBar.style(1); 
     } 
    }); 
    } 

    angular.module('shoplocal', ['ionic', 'ngCordova']) 
    .run(shoplocalRun); 
})(); 

der Controller ist in einer separaten Datei im www/app/Geschäfte/shopsCtrl.js:

(function() { 
    ShopsCtrl.$inject = []; 
    function ShopsCtrl() { 
    var vm = this;; 

    vm.foo = "bar"; 
    } 

    angular.module('shoplocal') 
    .controller('ShopsCtrl', ShopsCtrl); 
})(); 

aber wenn ich die Tests laufen, alles, was ich her bekommen m Karma ist:

PhantomJS 2.1.1 (Mac OS X 0.0.0) ShopsCtrl should foo FAILED 
    /Users/ospfranco/marcus/ShopLocal-Ionic/www/lib/ionic/js/ionic.bundle.js:17698:53 
    [email protected]/Users/ospfranco/marcus/ShopLocal-Ionic/www/lib/ionic/js/ionic.bundle.js:13648:24 
    [email protected]/Users/ospfranco/marcus/ShopLocal-Ionic/www/lib/ionic/js/ionic.bundle.js:17658:12 
    [email protected]/Users/ospfranco/marcus/ShopLocal-Ionic/www/lib/ionic/js/ionic.bundle.js:17584:22 
    [email protected]/Users/ospfranco/marcus/ShopLocal-Ionic/bower_components/angular-mocks/angular-mocks.js:2393:60 
PhantomJS 2.1.1 (Mac OS X 0.0.0) ShopsCtrl foo should be bar FAILED 
    /Users/ospfranco/marcus/ShopLocal-Ionic/www/lib/ionic/js/ionic.bundle.js:17698:53 
    [email protected]/Users/ospfranco/marcus/ShopLocal-Ionic/www/lib/ionic/js/ionic.bundle.js:13648:24 
    [email protected]/Users/ospfranco/marcus/ShopLocal-Ionic/www/lib/ionic/js/ionic.bundle.js:17658:12 
    [email protected]/Users/ospfranco/marcus/ShopLocal-Ionic/www/lib/ionic/js/ionic.bundle.js:17584:22 
    [email protected]/Users/ospfranco/marcus/ShopLocal-Ionic/bower_components/angular-mocks/angular-mocks.js:2393:60 
    TypeError: undefined is not an object (evaluating 'controller.foo') in /Users/ospfranco/marcus/ShopLocal-Ionic/tests/unit-tests/shops.controller.tests.js (line 27) 
    /Users/ospfranco/marcus/ShopLocal-Ionic/tests/unit-tests/shops.controller.tests.js:27:22 

eine Idee, was vor sich geht?

Antwort

0

Es stellte sich heraus, dass ich die cordova depedency fehlte, fügte ich die cordova Datei in meinen Tests conf:

files: [ 
     '../www/lib/ionic/js/ionic.bundle.js', 
     '../www/lib/ngCordova/dist/ng-cordova.js', 
     '../www/app/**/*.js', 
     '../bower_components/angular-mocks/angular-mocks.js', 
     'unit-tests/**/*.js' 
    ], 

jetzt alles richtig funktioniert.

Verwandte Themen