Как присваивает знать, где искать переменную экземпляра в интеграционных тестах? - PullRequest
0 голосов
/ 16 мая 2019

Я следовал руководству по rails и узнал метод assigns Rspec.

Вот как он используется в интеграционном тесте:

class SomeTest < ActionDispatch::IntegrationTest
  test "simplified test" do
    get '/some/path'
    #some assertions
    get '/other/path'
    assert_equal 'changed', assigns(:some_variable)
  end
end

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

Это так?как assigns добраться до переменной экземпляра some_variable?

Похоже, что в интеграционном тесте сохраняется некоторое состояние, доступ к которому осуществляется из assigns.

1 Ответ

0 голосов
/ 21 мая 2019

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

Это означает, что в интеграционном тесте вы можете получить доступ к:

  • @ controller: последний вызываемый контроллер
  • @ запрос: последний отправленный запрос
  • @ response: последний возвращенный объект ответа

assings просто переносит доступ к @controller.view_assigns, где хранятся все переменные экземпляра, которые будут доступны для представления.

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