Salut salut, j'aurais une petite question pour la communauté, est ce que quelqu'un aurai deja fait des tests unitaires avec karma ou autre sur angular et ionic? je suis perdu total lol ^^ j'ai une erreur qui me dit que :

Error: [$injector:modulerr] Failed to instantiate module starter due to:

Error: [$injector:modulerr] Failed to instantiate module ionic due to:

Error: [$injector:nomod] Module 'ionic' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

mais seulement tous mes arguments sont passé dans mon test, je comprend pas trop comment je doit faire pour tester toute mon application... sur node c'est plus simpla il n'y as pas les scope a declarer avant ,a penser a créer un rootscope etc etc, franchement c'est reloud les test unitaire avec ionic ^^

10 réponses


Jamais essayé mais tu as chargé ionic avant ton app ? (question con je sais :()

Defy
Auteur

Oui, j'ai chargé ionic, mais bon ca me soule un peut les test unitaire sur ionic la ^^ je vais me contenté des rapport de jshin pour le checkStyle ca seras plus simple et ca feras moin chi++ surtous!!

Salut,

j'ai deja fait des TU avec tout ca donc je veux bien voir avec toi si tu veux. Tu as un repo sur lequel on peut voir le code ?

Defy
Auteur

non, c'est un repo privé dsl. Mais parcontre je veut bien un coup de main :-) je peut mettre le code ici si tu veut

Yep, c'est sur que ca va m'aider :). Peux tu poster ton karma.js et un de tes fichiers test stp ?

Defy
Auteur

alors pour commencer ma conf karma :

module.exports = function(config) {
    config.set({
        basePath: './',
        files: [
            'www/lib/angular/angular.js',
            'www/lib/angular-mocks/angular-mocks.js',
            'www/js/app.js',
            'www/js/**/*.js',
            'test/**/*.js'
        ],
        frameworks: ['jasmine'],
        autoWatch: true,
        browsers: ['PhantomJS']
    });
};

et mon test:

describe('StatCtrl', function () {
    var $scope, controller;

    beforeEach(module('starter', [
        'ionic',
        'ionic.service.core',
        'ngCordova',
        'ionic.service.deploy',
        'ionic.service.push',
        'MessageCtrl',
        'MessageFiniCtrl',
        'MessageOneCtrl',
        'TicketCtrl',
        'TicketFiniCtrl',
        'TicketOneCtrl',
        'ticketProvider',
        'MessageProvider',
        'UpdateCtrl',
        'StatCtrl',
        'PushCtrl'
    ]));
    beforeEach(inject(function ($rootScope, $controller) {
        $scope     = $rootScope.$new();
        controller = $controller('StatCtrl',{
            $scope:scope
        });
    }));

    it('la fonction countAllTicket doit exister pour fonctionner', function () {
        expect(countAllTicket).toBeDefined();
    });
});

Alors, par rapport a mon code, il faudrait que tu mettes ca tout simplement :

 beforeEach(module('starter');

Parce que tu veux charger le module starter qui est le module principal de ton application, pas le reecrire comme c'est le cas ici.

De plus, dans ton karma.js, je pense qu'il te faut charger toutes tes dependences dans ton array files aussi, notamment ionic. ([Edit] : c'est peut etre charge dans la 4eme ligne de ton files justement).

Defy
Auteur

Ben j'ai essayé avec juste starter, c'est la que l'erreur est ressortie, j'ai essayé cette methode mais elle marche pas non plus ^^
J'ai pas essayer de charger en dure toute l'app, faudras que j'essaie.

Quand je vois l'erreur et le fichier karma.js, j'ai l'impression que la librairie ionic n'est pas chargee. Est elle dans ton dossier js ou ailleurs ?

Defy
Auteur

Ha!! elle est dans le dossier lib, j'ai oublié de metre le lien vers lib dans mon karma.conf ca doit venir de ca