Faraday: Страница тестирования новой документации

Созданный на 9 июл. 2019  ·  4Комментарии  ·  Источник: lostisland/faraday

Основная информация

  • Версия Фарадея: мастер
  • Версия Ruby: 2.6.3

Описание проблемы

Нет документации по тестированию с Фарадеем. Там, где я работаю, появился Ruby on Rails, потому что это круто. Мало думали о тестировании красных ящиков. Я хотел бы предоставить некоторую документацию, чтобы помочь другим

Действия по воспроизведению

  • посетите сайт.
  • Нажмите usage
  • переходите по следующим ссылкам нижнего колонтитула, пока не перестанете двигаться вправо (https://lostisland.github.io/faraday/usage/streaming)
  • обратите внимание на отсутствие тестирования при использовании: scream_cat:

Самый полезный комментарий

Спасибо, что подняли этот вопрос. В ответ я опубликовал PR, чтобы включить примеры live test / unit и rspec использования адаптера Faraday Test: # 1000. Это рекомендуемый способ тестирования Фарадея вместо внешних тестовых двойных библиотек (rspec, mocha, webmock и т. Д.).

Все 4 Комментарий

Спасибо, что подняли этот вопрос. В ответ я опубликовал PR, чтобы включить примеры live test / unit и rspec использования адаптера Faraday Test: # 1000. Это рекомендуемый способ тестирования Фарадея вместо внешних тестовых двойных библиотек (rspec, mocha, webmock и т. Д.).

Я ни разу не заметил, что это тестирование таких вещей, как тайм-ауты, ошибки соединения и т. Д. Не одобряют ли эту тему или просто способ, которым используется PR # 998.

Полагаю, я не понимаю синтаксиса

Полагаю, я не понимаю синтаксиса

Уф, может мне стоит еще раз вернуться к тестовой документации Фарадея: /

Синтаксис в # 1000 использует экземпляр Faraday::Adapter::Test::Stubs , эксклюзивный объект-заглушку для проверки циклов запроса / ответа Фарадея. Вы можете использовать его для настройки фиктивных ответов на HTTP-запросы в конкретном тесте.

  it 'parses name' do
    # this block yields a rack response: an array with:
    # response status, http header hash, and response body
    stubs.get('/ebi') do |env|
      [
        200,
        { 'Content-Type': 'application/javascript' },
        '{"name": "shrimp"}'
      ]
    end

    expect(client.sushi('ebi')).to eq('shrimp')
    stubs.verify_stubbed_calls
end

Прошу прощения, я явно недостаточно внимательно прочитал ваши вопросы. Я совершенно упустил из виду, что вы специально хотели протестировать исключения. Подобный тест тоже работает (я добавлю его в # 1000):

  it 'handles exception' do
    stubs.get('/ebi') do
      raise Faraday::ConnectionFailed, nil
    end

    expect { client.sushi('ebi') }.to raise_error(Faraday::ConnectionFailed)
    stubs.verify_stubbed_calls
  end

Я предпочитаю конкретные реализации двойных тестов, подобные этой, более обобщенному подходу с имитацией, поскольку они по-прежнему проходят через весь рабочий процесс запроса Фарадея. Если разработчик в любом случае захочет использовать mocks RSpec, им лучше подойдет отличная документация RSpec.

Поставляется с # 1000

Была ли эта страница полезной?
0 / 5 - 0 рейтинги