2015-10-05 2 views
0

Я пытаюсь выполнить модульное тестирование с помощью кармы. Я сделал все в соответствии с документацией. Когда я пишу эту часть теста, которая следует за ней, она никогда не вызывает две последние функции.Unit-Testing with Karma не вызывающие функции

it('should create the mock object', function (done) { 

    service.createObj(mockObj) 
     .then(test) 
     .catch(failTest) 
     .finally(done); 
}); 
var test = function() { 
    expect(2).toEqual(1); 
}; 

var failTest = function(error) { 
    expect(2).toEqual(1); 
}; 
+0

любая ошибка в консоли? –

ответ

1

Попробуйте ввести в свою переднюю функцию rootScope. Например, как это:

var rootScope; 

beforeEach(inject(function (_$rootScope_) { 
    rootScope = _$rootScope_.$new(); 
    //other injections 
})); 

и следующий вызывать $ переваривать() после вашего метода обслуживания:

it('should create the mock object', function (done) { 
    service.createObj(mockObj) 
     .then(test) 
     .catch(failTest) 
     .finally(done); 

    rootScope.$digest(); 
}); 
+0

почему он должен назвать rootScope. $ Digest(); !? нет необходимости в этом (и нет необходимости устанавливать программу $ rootScope), чтобы проверить службу данных, просто используйте $ httpBackend, чтобы высмеять ваш сервер, есть много ответов, которые описывают, как тестировать объект службы. –

+0

Он работал с использованием предлагаемого решения. Я пытался использовать только $ httpBackend, но это не сработало. – Kratos

+0

У меня была такая же проблема несколько месяцев назад, и это решение разрешило мою проблему. Я не знаю, почему, но в модульных тестах Angular не запускает promyess автоматически и нуждается в помощи, вызывая rootScope. $ Digest(). –

0
  • Установка углового издевается модуля.
  • Инъекционный модуль с модулем в beforeEach.
  • Внесите свой сервис с функцией ввода в beforeEach.
  • Используйте $ httpBackend для имитации вашего сервера.
  • Не забудьте сделать это, синхронизируйте. с $ http.flush().
Смежные вопросы