Squeak.ru - шаблоны программирования

Модульное тестирование маршрутов AngularJS выдает ошибку: неожиданный запрос

Ниже мой Jasmine RoutesSpec.js

describe("Todo Routes", function(){
    var route;
    var rootScope;
    var location;

    beforeEach(function(){
        module('todoApp');

        inject(function($route, $location, $rootScope){
            route = $route;
            location = $location;
            rootScope = $rootScope;
        }); 
    });

    it("should navigate to todo list", function(){
        expect(route.current).toBeUndefined();
        location.path('/todos');
        rootScope.$digest();
        expect(route.current.templateUrl).toBe('app/html/listTodos.html');
    });
});

Ниже мой app.js

var todoModule = angular.module("todoApp", []);

todoModule.config(function($routeProvider){
    $routeProvider.when('/todos', {
        templateUrl: '../html/listTodos.html',
        controller: 'TodoListController'
    })
    .otherwise({redirectTo: '/todos'});
});

todoModule.controller("TodoListController", function($scope, $log){
    $scope.todos = [{title: "My first task", done: false}];
    $log.log('In list controller');
});

Выполнение этой спецификации вызывает следующую ошибку:

Ошибка: Неожиданный запрос: GET ../html/listTodos.html Больше запросов не ожидается при ошибке () в $httpBackend (C:/Learn/Javascript/todo_app/libs/angular-mocks.js:934:9) в sendReq ( C:/Learn/Javascript/todo_app/libs/angular.js:9146:9) в $http (C:/Learn/Javascript/todo_app/libs/angular.js:8937:17) в Function.$http.(анонимно функция) (C:/Learn/Javascript/todo_app/libs/angular.js:9080:18) в $q.when.then.then.next.locals (C:/Learn/Javascript/todo_app/libs/angular.js :7440:34) в wrapCallback (C:/Learn/Javascript/todo_app/libs/angular.js:6846:59) в wrapCallback (C:/Learn/Javascript/todo_app/libs/angular.js:6846:59) в C:/Learn/Javascript/todo_app/libs/angular.js:6883:26 в Object.Scope.$eval (C:/Learn/Javascript/todo_app/libs/angular.js:8057:28)


  • Установка корня в /todos в вашем тесте запускает HTTP-загрузку части, связанной с этим маршрутом. Но поскольку вы не издевались над httpBackend, чтобы сообщить ему, что делать при получении запроса на этот частичный запрос, вы получаете эту ошибку. 28.07.2013
  • Означает ли это, что решение, предоставленное Юхо здесь stackoverflow.com/questions/ 15990102/ тоже не сработает? 28.07.2013
  • Не знаю. Не эксперт в угловых. Я просто анализирую ошибку, которую вы получили. 28.07.2013

Ответы:


1

Это означает, что существует вызов AJAX для извлечения шаблона. $httpBackend.expectGET('app/html/listTodos.html').respond(200) можно поставить перед вызовом path():

describe("Todo Routes", function(){
    var route;
    var rootScope;
    var location;
    var httpBackend;

    beforeEach(function(){
        module('todoApp');

        inject(function($route, $location, $rootScope, $httpBackend){
            route = $route;
            location = $location;
            rootScope = $rootScope;
            httpBackend = $httpBackend;
        }); 
    });

    it("should navigate to todo list", function(){
        httpBackend.expectGET('app/html/listTodos.html').respond(200);//mimicking the AJAX call
        expect(route.current).toBeUndefined();
        location.path('/todos');
        rootScope.$digest();
        expect(route.current.templateUrl).toBe('app/html/listTodos.html');
    });
});
20.03.2014
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...