У меня есть образец приложения Rails, над которым я работаю, чтобы начать знакомство с BDD.
Прямо сейчас я использую Devise для проверки подлинности пользователя.
У меня есть модель задачи, которая требует, чтобы пользователь вошел в систему, чтобы получить доступ к новым, создавать, редактировать и уничтожать действия.
У меня есть следующий код:
запросы/задачи_spec.rb
describe "Tasks" do
it "redirects to sign in for new task if no user logged in" do
visit new_task_path
response.should redirect_to(new_user_session_path)
end
end
Теперь, когда я запускаю этот тест, я ожидаю, что он потерпит неудачу, потому что я не добавил никакой логики before_filter в TasksController. Я запускаю тест, и он терпит неудачу.
Теперь я добавляю помощника authenticate_user!
, предоставленного Devise.
tasks_controller.rb
class TasksController < ApplicationController
before_filter :authenticate_user!, only: [:new, :edit, :create, :destroy]
...
end
Тесты запускаются и все еще терпят неудачу, говоря следующее:
1) TasksController redirects to sign in for new task if no user logged in
Failure/Error: response.should redirect_to(new_user_session_path)
Expected response to be a <:redirect>, but was <200>
Теперь при вызове посещения, поскольку в сеансе не было установлено ни одного пользователя, я ожидаю, что ответ будет перенаправлен на /user/sign_in. Тем не менее, я просто получаю обратно 200OK.
Что мне здесь не хватает? Как мне пройти этот тест?