2015-04-17 4 views
2

Я использую ngMockE2E, чтобы высмеять httpBackend при разработке пользовательского интерфейса в Angular JS. Приложение работает на сервере Grizzly с бэкэнд, который предоставляется виртуальной машиной. Теперь, когда я иду на веб-сайте Консоль регистрирует ошибку:ng mock e2e Неожиданный запрос

Неожиданный запрос: GET/апи/Информация

Нет больше просьба ожидать

В моем случае я только хочу, чтобы дразнить данные одной базы данных , Кроме того, я хочу включить ложь вкл/выкл на лету с помощью кнопки. Это работало до появления ошибки. Для этого случая я написал следующее:

$httpBackend.whenPOST(function (url) { 
     if (!mockup) { 
      return false; 
     } 
     var target_url = (someUrl); 
     return target_url === url; 
    }).respond(function (method, url, data) { 
     return [200, [someData], {}, 'mockupData']; 
    } 
); 

Дополнительно к этому я добавил следующее передать все другие запросы:

// pass the rest of the queries 
$httpBackend.whenGET(/.*/).passThrough(); 
$httpBackend.whenPOST(/.*/).passThrough(); 
$httpBackend.whenPUT(/.*/).passThrough(); 
$httpBackend.whenDELETE(/.*/).passThrough(); 
+0

Вы используете непосредственно из файла: // или у вас есть сервер? если вы используете из файла, попробуйте установить любой небольшой http-сервер, например узел http-сервера. Потому что один раз у меня есть аналогичная проблема с get и mock с использованием файла: // –

+1

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

ответ

0

Так что для всех вас, кто сталкивается с такой же проблема. Я нашел обходное решение проблемы. Но я уверен, что должно быть другое лучшее решение. Для этого я использовал перехватчик, который также предусмотрен угловым. Here the api

Так что я писал:

app.factory('httpInterceptor', function() { 
     return { 
      'response': function (response) { 
       // therefore you can enable the mockup with a switch or a button 
       if (!mockup) { 
        return response; 
       } 
       try { 
        // in the config object is the requested url 
        if (response.config.url !== someUrl) { 
         // don't intercept; return response unchanged 
         return response; 
        } 
        // found an url which should be mocked 
        // generate or modify the data 
        var generatedData = generateSomeData(); 
        response.data.push(generatedData) 
        return response; 
       } catch (TypeError) { 
        // don't intercept 
        return response; 
       } 
      } 
     } 
    } 
); 
app.config(['$httpProvider', function ($httpProvider) { 
    $httpProvider.interceptors.push('httpInterceptor'); 
}]);