При использовании 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 нет. Вот почему они не совпадают.
Вещи, которые я пробовал, которые не работали:
Решил это некоторое время назад. Случилось так, что тест $ httpBackend вызвал изменение маршрута. Это изменение маршрута вызвало пожар, и мы застряли в петле.
Однако это произошло только при тестировании с помощью $ httpBackend. В реальном мире этого бесконечного цикла не произошло.
Было два решения: