Тестирование HTTP основной автор в направляющих 2.2 +

Посмотрите объяснение здесь .

интерфейс Callable подобен Выполнимому, в том оба разработаны для классов, экземпляры которых потенциально выполняются другим потоком. Выполнимый А, однако, не возвращает результат и не может бросить контролируемую исключительную ситуацию.

12
задан molf 22 July 2009 в 15:13
поделиться

1 ответ

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

В моем случае ловушка заключалась в том, что я забыл добавить фикстуры для пользователей, поэтому crypted_password не совпал (почему он вообще имел какое-либо значение, до сих пор для меня загадка ... Полагаю, Rails не очистил тестовую базу данных перед запуском тест?)

class DonglesControllerTest < ActionController::TestCase
  fixtures :users

  test "index api" do
    @request.env['HTTP_AUTHORIZATION'] = encode_credentials('one', 'one')

    get(:index, { :name_contains => 'XXXX0001', :format => 'json' })

    assert_equal 'application/json', @response.content_type
    dongles = ActiveResource::Formats::JsonFormat.decode(@response.body)

    expected_dongles = [
      { 'id' => 1,
        'name' => 'XXXX0001',
        'key_id' => 'usbstor\disk&ven_flash&prod_drive_sm_usb20&rev_1100\0000000000000000&0' }
    ]

    assert_equal expected_dongles, dongles
  end

  private

  # verbatim, from ActiveController's own unit tests
  def encode_credentials(username, password)
    "Basic #{ActiveSupport::Base64.encode64("#{username}:#{password}")}"
  end
end
9
ответ дан 2 December 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: