Угловой httpBackend сбой браузера

0

При использовании Jasmine и Angular (1.4.7) с Restangular (1.4.0), httpBackend и угловыми mocks (1.4.7), Chrome и PhantomJS оба сбой при столкновении со следующей строкой:

httpBackend.whenGET('/something').respond(200);

Если я полностью избавлюсь от него, как показано ниже, я получаю следующую ошибку:

//httpBackend.whenGET('/something').respond(200);
scope.doSomething();  // will invoke a GET to /keepAlive
httpBackend.expectGET("/something").respond(200);
httpBackend.flush();

Ошибка: неожиданный запрос: GET/что-то больше ожидаемого запроса

Код, который он тестирует:

$scope.doSomething = function () {
    Restangular.one('something').get();
};

Я пробовал все, что мог придумать. Я не согласен с тем, что это всего лишь ошибка в карме/жасмине/рестатулярной, но я не знаю, как ее обойти.

Стоит отметить, что httpBackend и Restangular не согласны с URL-адресом. Restangular добавляет / в /something. httpBackend нет. Вот почему они не совпадают.

Вещи, которые я пробовал, которые не работали:

  • Вызов/что-то из Restangular. Говорит неожиданный GET//что-то (две косые черты)
  • Использование /something/other вместо одного корневого уровня. Нет разницы.
  • используя $ http вместо Restangular. Нет разницы.
  • 1
    Я предполагаю, что ваш код имеет бесконечный цикл. Можете ли вы выделить код, чтобы мы могли воссоздать проблему?
Теги:
unit-testing
jasmine
restangular

1 ответ

0
Лучший ответ

Решил это некоторое время назад. Случилось так, что тест $ httpBackend вызвал изменение маршрута. Это изменение маршрута вызвало пожар, и мы застряли в петле.

Однако это произошло только при тестировании с помощью $ httpBackend. В реальном мире этого бесконечного цикла не произошло.

Было два решения:

  1. redefine $ location.go в вашем beforeEach(), чтобы ваше тестирование фактически не вызывало перенаправление -or -
  2. захватить событие как-то и сквош его, или просто изменить свой код, чтобы не запускать его

Ещё вопросы

Сообщество Overcoder
Наверх
Меню