Почему я получаю "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
заставляет эти тесты пройти. И у меня остались только проблемы с ворсом.
Для справки, это именно то, что должно быть в самом уроке, и я не уверен, почему я не думал об этом раньше.