По умолчанию RSpec (по крайней мере, в более новых версиях) запрещает Rails отображать представления при запуске спецификаций контроллера. Они хотят, чтобы вы протестировали свои представления в виде спецификаций, а не контроллеров. Поскольку представления не отображаются, assert_select
всегда завершается ошибкой.
Но для людей, которые (как и я) хотят проверить случайный фрагмент представления в своих спецификациях контроллера, они предоставляют метод render_views
. Вы должны вызывать его в своем блоке describe
или context
, но не внутри блока it
.
describe UserController do
render_views # <== ADD THIS
describe "login page open" do
it "login page contains all expected controls" do
get :login
assert_select "form[action=?]", "/user/login" do
assert_select "input[name=?]", "username"
assert_select "input[name=?]", "password"
assert_select "input[type=?]", "submit"
end
end
end