Имам примерно приложение на Rails, върху което работя, за да мога да започна да се запознавам с BDD.
В момента използвам Devise, за да се справя с удостоверяването на потребителя си.
Имам модел на задача, който изисква потребител да е влязъл, за да има достъп до действията за ново, създаване, редактиране и унищожаване.
Имам следния код:
requests/tasks_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>
Сега, когато извиквам visit, тъй като в сесията не е установен потребител, очаквам отговорът да бъде пренасочен към /user/sign_in. Обаче просто получавам 200ОК обратно.
Какво ми липсва тук? Как да накарам този тест да премине?