@semolex

Как правильно тестировать HTTP запрос в Karma \ AngularJS?

Всем привет!
Имею проблему следующего содержания:
Нужно протестировать контроллер на 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)
                });
            };


Все прекрасно работает, когда просто запускаешь апликуху. Меняет нужно поле, все хорошо. Немогу понять что я не так делаю. Буду благодарен за помощь. Спасибо!
  • Вопрос задан
  • 338 просмотров
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
Скажите, в каком месте $scope.updatePrice у вас меняет данные в скоупе?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы