Почему я получаю "Ajax авторизация не проходит" в моих тестах

Я следую за учебниками ember, и, в частности, я нахожусь на услугах.

Я на 99,9% уверен, что у меня есть точный код на месте - я копирую вручную, потому что считаю, что это помогает мне более полно его усвоить, но если что-то не получается, я начинаю использовать проверку различий, чтобы проверить, не сделал ли я опечатку. Насколько мне известно, никаких опечаток.

Приложение, которое я написал, работает идентично скриншотам в уроках, и единственная ошибка, которую я получаю, это ошибка lint из-за наличия теста, в котором нет утверждения (пока).

До этого блока все остальные тесты также прошли. Но сейчас я получаю неудачные тесты, которые ранее прошли. Похоже, все они происходят из-за сбоя при вызове заглушки. Первый тест, который не проходит integration/component/rental-listing-test.js:

hooks.beforeEach(function() {
  this.rental = {
    image: 'fake.png',
    title: 'test-title',
    owner: 'test-owner',
    type: 'test-type',
    city: 'test-city',
    bedrooms: 3
  };
});
test('should display rental details', async function(assert) {
  await render(hbs`{{rental-listing rental=rental}}`);
  assert.equal(this.element.querySelector('.listing h3').textContent.trim(), 'test-title', 'Title: test-title');
  assert.equal(this.element.querySelector('.listing .owner').textContent.trim(), 'Owner: test-owner', 'Owner: test-owner');
});

Если я удалю новую строку из rental-listing.hbs ({{location-map location=rental.city}}), тем самым предотвращая использование карты, эти тесты снова проходят (хотя у новых тестов для компонента, использующего сервис, есть проблемы).

Так что я либо делаю что-то не так, что не могу найти, либо просто замечательные люди на emberjs.com не предоставили полную информацию в этом уроке. Нужно ли как-нибудь заглушить картографический сервис? что появляется в файле.hbs для прохождения вышеупомянутого теста? Если так, почему вы думаете, что они не упомянули об этом?

ETA утверждение:

Ajax authorization failed                      @ 273 ms
Source: Error: Ajax authorization failed
  at new EmberError (http://localhost:7357/assets/vendor.js:13635:31)
  at new AjaxError (http://localhost:7357/assets/vendor.js:116954:13)
  at new UnauthorizedError (http://localhost:7357/assets/vendor.js:116968:13)
  at Class._createCorrectError (http://localhost:7357/assets/vendor.js:117533:25)
  at Class.handleResponse (http://localhost:7357/assets/vendor.js:117528:25)
  at Object.jqXHR.done.fail (http://localhost:7357/assets/vendor.js:117380:41)
  at fire (http://localhost:7357/assets/vendor.js:3609:31)
  at Object.fireWith [as rejectWith] (http://localhost:7357/assets/vendor.js:3739:7)
  at done (http://localhost:7357/assets/vendor.js:9648:14)
  at XMLHttpRequest.<anonymous> (http://localhost:7357/assets/vendor.js:9889:9)

2 ответа

Решение

Вам не нужен ключ API для запуска тестов. Вы попробовали репо супер аренды, чтобы увидеть, есть ли у него такая же проблема? https://github.com/ember-learn/super-rentals

Если у него есть та же самая проблема, мы, вероятно, должны PR исправить исправление к уроку.

Обновить

Я вижу, что в рассматриваемом интеграционном тесте отсутствует определение сервиса карт-заглушек. Он есть в репозитории, но не упоминается в руководстве. См. https://github.com/ember-learn/super-rentals/blob/master/tests/integration/components/rental-listing-test.js для кода. Я добавил эту информацию в вопрос об обновлении руководств: https://github.com/ember-learn/guides-source/issues/347

Так что я наконец-то успел взглянуть на это. Проблема состоит в том, что это настроено для внешнего картографического сервиса, чтобы использовать переменную среды для ключа API. Вот почему приложение работает нормально (я использую KEY=value ember s запустить приложение) но тестов не было. Просто используя KEY=value ember t -s заставляет эти тесты пройти. И у меня остались только проблемы с ворсом.

Для справки, это именно то, что должно быть в самом уроке, и я не уверен, почему я не думал об этом раньше.

Другие вопросы по тегам