Angular -mocks - только mock явный запрос. пропустить все непредвиденные запросы

Мне кажется невероятным разочарование в том, что angular -блокирует блокировку всех запросов ПО DEFAULT и заставляя меня "пропускать" то, что я хочу.

Иногда я просто хочу протестировать 1 URL-адрес с макетом, и я должен перепрыгнуть через серьезные обручи для каждой ошибки "Неожиданный запрос".

Я не знаю regex, мне не нравится регулярное выражение, я не хочу использовать регулярное выражение!

Посмотрим на этот отвратительный код, который мне нужен для ОДНОГО простого макета

 $httpBackend.whenGET(/\/atlas\/account\/[0-9]+$/)
     .respond(atlasAccounts[0]);

  $httpBackend.whenGET(/\/scripts$/).passThrough();     
  $httpBackend.whenGET(/^\w+.*/).passThrough();     
  $httpBackend.whenPOST(/^\w+.*/).passThrough(); 

Почему это не может быть просто сведено к одной строке???

 $httpBackend.whenGET(/\/atlas\/account\/[0-9]+$/)
     .respond(atlasAccounts[0]); 

Или даже лучше, почему он не поддерживает проклятые подстановочные знаки? Они пытаются сделать жизнь разработчиков более сложной?

  $httpBackend.whenGET("/atlas/account*") 
     .respond(atlasAccounts[0]);

Это все, что мне нужно, если бы это было просто интуитивно...

Есть ли способ отключить это соглашение "все или ничего" в ngMock и ТОЛЬКО перехватывать URL-адреса, которые я EXPLICITLY высмеиваю?

Ответы

Ответ 1

Сначала добавьте все ваши снимки, а затем, наконец, добавьте сквозной проход для всех. Я делаю что-то подобное в своем приложении и прекрасно работаю:

function run($httpBackend) {
    var phones = [{ name: 'phone1' }, { name: 'phone2' }];

    // Capture specific request
    $httpBackend.whenGET('/phones').respond(function () {
        return phones;
    });

    // Passthrough everything
    $httpBackend.whenGET(/[\s\S]*/).passThrough();
}

Это приведет к захвату '/phones'. Если он не будет захвачен, он пройдет через.