#ruby-on-rails #unit-testing #httpresponse
#ruby-on-rails #модульное тестирование #httpresponse
Вопрос:
Как можно проверить, не является ли HTTP-ответ чем-то иным в стандартной среде модульного тестирования с Rails (версия 6.0, более конкретно)? По сути, это отрицание assert_response следующим образом:
test "should get index" do
get restricted_articles_url
assert_response_NOT :success # <= this method does not exist.
end
Предыстория в том, что тестируемому пользователю не должен быть предоставлен доступ к URL (или методу контроллера), но какой ответ будет возвращен, может измениться позже в процессе разработки, и точный ответ имеет второстепенное значение.
Ответ №1:
Ref rails-specific-assertions , почему бы вам не использовать точный ответ, который вы ожидаете, вместо использования отрицания assert_response .
Asserts that the response comes with a specific status code. You can specify
:success to indicate 200-299, :redirect to indicate 300-399, :missing to
indicate 404, or :error to match the 500-599 range
Например:-
assert_response :redirect
Ответ №2:
Вы всегда можете проверить response.code
напрямую с помощью
# codes from 200 to 299 are :success
assert_not (200...299).include?(response.code.to_i)