Проверка, существует ли данный URL из Angular 2+ - PullRequest
0 голосов
/ 01 декабря 2018

Мне дали задание создать приложение, которое сообщит, какие URL повреждены, из массива URL.Так, например, для «www.google.com» я верну «работает», а для «www, gooogle.con» я верну «сломанный».

Мой первый подход состоял в том, чтобы попытаться отправить запрос GET, используяКлиент HTTP, но браузер блокирует мои запросы из-за политики CORS.Поскольку изменение кода на стороне сервера на самом деле не вариант, мне было интересно, есть ли способ обойти это?

Кроме того, я хотел бы знать, есть ли другой подход к задаче, которая могла быоблегчить мне жизнь?

Кроме того, отключение безопасности браузера - не вариант, потому что я должен иметь возможность распространять проект.

1 Ответ

0 голосов
/ 01 декабря 2018

Давайте подойдем к этому немного по-другому.Вы должны проверить, работает ли данный список URL-адресов или нет, используя Angular 2+.

Вы можете написать тесты E2E в Angular.Он откроет браузер и автоматически загрузит каждый данный URL.После загрузки URL необходимо просто проверить код ответа.


Добавьте следующий код в ваш файл app.e2e-spec.ts:

describe('Test App', () => {
let page: AppPage;

beforeEach(() => {
  page = new AppPage();
});

function httpGet(siteUrl) {
  var http = require('http');
  var defer = protractor.promise.defer();
  http.get(siteUrl, function(response) {
    response.setEncoding('utf8');
    response.on("data", function(chunk) {});
    response.on('end', function() {
      defer.fulfill({
        statusCode: response.statusCode
      });
    });
  }).on('error', function(e) {
    defer.reject('404');
  });

  return defer.promise;
}

describe('Checking URLS', function () {
  const urls = [
    'http://www.google.com',
    'http://www.angular.io',
    'http://www.lakjsldkjalskjdlkjalskjdlkajsldkja.com',
    'http://www.stackoverflow.com',
    'http://www.withgoogle.co.in',
    'http://www.kajshdkjhaksj.com'
  ];

  for (let url of urls) {
    it('check '+url, async function () {
      browser.ignoreSynchronization = true;
      const EC = protractor.ExpectedConditions;
      const elm = element(by.css("html"));
      let res = '';
      await httpGet(url).then(function(result){
        res = result['statusCode']+'';
      });
      browser.wait(EC.presenceOf(elm), 5000).then(() => {
        expect(res).not.toEqual('404');
      });
    });
  }
});

Приведенный выше тестовый код E2E проверит каждый URL, а если URL не существует, он выдаст 404 и также покажет неудачный тест.Таким образом, вы будете знать, какие URL не работают.

Ng Test Results

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...