Я не могу заставить эти два файла spec хорошо играть друг с другом. Я не думал, что файлы spec будут влиять на другие файлы спецификаций, но в этом случае кажется, что они это делают, для меня это не имеет смысла.Угловая насмешка в Jasmine Неизвестный поставщик
Я использую Жасмин и Карму тестов автоматизированы с Глотком
Ошибки я получаю "Неизвестный поставщик: ProductServiceProvider < - ProductService"
I изменили тесты на устранение неполадок здесь, это простые версии.
Если я прокомментирую следующую строку в файле 2, оба файла пройдут.
angular.module('eu.product.service', []);
Это как-то связано с насмешкой над модулем, но я не могу понять, что я здесь делаю неправильно.
спецификации файла 1
describe('Testing euProduct', function(){
var $factory;
var $httpBackend;
beforeEach(function() {
//modules
module('eu.product.service');
//injections
inject(function($injector){
$factory = $injector.get('ProductService');
$httpBackend = $injector.get('$httpBackend');
});
//mock data
$httpBackend.when('GET', '/Mercury/product/list/0/0?PrimaryCategoryID=0&pageSize=20&startPage=1').respond({
"data":
[{
"recallid":45,
}]
});
});
afterEach(function() {
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
});
//-----Tests----
it('Should be able to get data from the server on default parameters.', function(){
$factory.list({},function(data){
expect(data.data[0].recallid).toBe(45);
});
$httpBackend.flush();
});
});
Spec Файл 2
'use strict';
описывают ('Тестирование euProduct логики', функция() {
//variables in closure scope so they can be used in tested but set with injection in beforeEach
var $factory;
//mocking a module :: http://www.sitepoint.com/mocking-dependencies-angularjs-tests/
beforeEach(function() {
angular.module('eu.product.service',[]);
module(function($provide) {
$provide.factory('ProductService', function() {
// Mocking utilSvc
return {
list : function(para, callback){
callback({
data : {
product : 'The product Name'
}
})
}
};
});
$provide.service('storageSvc', function() {
// Mocking storageSvc
});
});
//modules
module('eu.product.logic');
//injections
inject(function($injector){
$factory = $injector.get('ProductLogic');
});
});
//-----Tests----
it('Should be able to run tests', function(){
expect(2).toBe(2);
});
});
сделать загрузочный модуль, как этот 'angular.module («eu.product.service»)' –
я стреляю за насмешливый модуль не импортировать его, так что если есть ошибка с ЕС. module.service он не будет отображаться в тесте eu.service.logic. Как бы вы издевались над этим, а затем импортировали его. –
так, как вы сейчас это делаете, создавая новый модуль, который вымывает все зарегистрированные его компоненты .. что вы хотели высмеять в 'eu.product.service'? –