Всем привет!
Имею проблему следующего содержания:
Нужно протестировать контроллер на AngularJS с помощью фреймоворка Karma. Все хорошо до момента, когда нужно протестировать функцию, которая меняет одно поле в базе. Все работает, но когда запускаю тест - результат очень неожиданный, такое впечатление что ничего не работает :).
Вот код:
// Готовим пре-реквизиты.
beforeEach(inject(function($controller, $rootScope, _$httpBackend_, $filter) {
scope = $rootScope.$new();
$httpBackend = _$httpBackend_;
booksPriceUpdated = $httpBackend.whenPOST('http://localhost:8000/v1/books/d2f38d822941c1e7b90f71296a9ac453').respond(EXPEXTED_UPDATE_RESULT);
createController = function() {
return $controller('BooksCtrl', {
$scope: scope
});
};
}));
// Собственно, проблемная часть.
it('should test updatePrice function', function() {
createController();
$httpBackend.flush();
expect(scope.books[0].price).toBe(0); // pre-loaded priority
scope.updatePrice(scope.books[0], {
"price": 1,
});
$httpBackend.flush();
expect(scope.books[0].price).toEqual(1); // FAIL, ВСЕРАВНО ВОЗВРАЩАЕТ 0!
});
// Вот функция в контроллере:
$scope.updatePrice = function(data) {
bibleApi.post('/books/' + data.id, {
"price": data.price
}).success(function(data, status, headers, config) {
console.log('Sucessfully updated price: ' + data.name + ', price: ' + data.price)
}).
error(function(data, status, headers, config) {
console.log(data.message)
});
};
Все прекрасно работает, когда просто запускаешь апликуху. Меняет нужно поле, все хорошо. Немогу понять что я не так делаю. Буду благодарен за помощь. Спасибо!