2015-02-18 2 views
1

Я создал мое веб-приложение с gulp angular. Затем я создал службу и хочу ее протестировать.Gulp тест не найден модуль

файл Модуль app.module.js

angular.module('text', []); 

файл Сервис text.service.js

(function() { 
    'use strict'; 
    angular.module('text') 
    .factory('description',TextService); 

    TextService.$inject = ['$http'] 

    function TextService($http) { 

    return { 
     QueryStaticText: queryStaticText 

    }; 

    function queryStaticText(link) { 
     return link; 
    } 
    } 

})(); 

Test файл text.service.spec.js

'use strict'; 

describe('TextService', function() { 
    var description; 

    beforeEach(function() { 

    module('text'); 

    inject(function (_description_) { 
     description = _description_; 
    }); 

    }); 

    it('should return text', function() { 
    expect(description.QueryStaticText("Hello")).toEqual("Hello anu"); 
    }); 
}); 

В консоли я выполняю тест gulp, и у меня есть сообщение об ошибке

[22:02:44] Using gulpfile /Volumes/Developer/angularjs/project/gulpfile.js 
[22:02:44] Starting 'test'... 
[22:02:45] Starting Karma server... 
INFO [karma]: Karma v0.12.31 server started at http://localhost:9876/ 
INFO [launcher]: Starting browser PhantomJS 
INFO [PhantomJS 1.9.8 (Mac OS X)]: Connected on socket 1KW_uYCk45moVKwfgAd2 with id 19804685 
PhantomJS 1.9.8 (Mac OS X) ERROR 
    Error: [$injector:nomod] Module 'text' 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. 
    http://errors.angularjs.org/1.3.12/$injector/nomod?p0=text 
    at /Volumes/Developer/angularjs/project/bower_components/angular/angular.js:1769 



/Volumes/Developer/angularjs/project/gulp/unit-tests.js:30 
     throw err; 

Текстовый модуль не загружен, как его загрузить?

ответ

2

Похоже, вы не загружаете свои файлы по порядку в Карме. Внутри вас karma.conf.js должен быть список файлов. Загрузите модуль приложения, а затем остальную часть вашего javascript. Вот сообщение, которое имело same problem.

Для примера:

files: [ 
    'bower_components/angular/angular.js', 
    'bower_components/angular-mocks/angular-mocks.js', 
    'bower_components/angular-animate/angular-animate.js', 

    'app/**/*.module.js', // Loads all files with .module.js 
    'app/**/*.js',   // Load the rest of your .js angular files 
    'test/**/*.js'   // Load your tests 
], 
+0

Я попробую и дам вам знать. –

+0

Один миллион спасибо. Оно работает. –

+0

Два миллиона спасибо! Работал и для меня тоже ... – teone

0
beforeEach(module('text')); 
beforeEach(inject(function (_description_) { 
    description = _description_; 
})); 

В основном, возвращаемое значение модуля и инъекции должны быть аргументом в пользу beforeEach. См. https://docs.angularjs.org/guide/module#unit-testing

+0

Я стараюсь, но ничего не помогает. Подробное описание https://github.com/Swiip/generator-gulp-angular/issues/364#issuecomment-75015636 –

1

Использование angularFilesort заказать файлы по зависимости:

// gulp/unit-tests.js 
... 
// around line 36 inserted the following line: 
.pipe($.angularFilesort()) 

Так должен выглядеть следующим образом:

gulp.src(srcFiles) 
    .pipe($.angularFilesort()) 
    .pipe(concat(function(files) { 
    callback(bowerDeps.js 
     .concat(_.pluck(files, 'path')) 
     .concat(htmlFiles) 
     .concat(specFiles)); 
    })) 
Смежные вопросы