Я пытаюсь следовать учебнику Майкла Хартла по Ruby on Rails в http://ruby.railstutorial.org/chapters/sign-in-sign-out,, но с некоторыми изменениями на практике, прежде всего, с некоторыми изменениями и каркасом Test :: Unit.В этом уроке используется RSpec, а я пытаюсь придерживаться Test :: Unit + Shoulda-context.
В главе 9 мне предлагается пройти некоторые функциональные тесты, в которых используется переменная, называемая «контроллер»', но мои тесты не работают, поскольку они обнаруживают, что "контроллер" не существует.Вот что я получаю:
marcel @ pua: ~ / Desenvolupament / Rails3Examples / ror_tutorial $ rake test: недавний загруженный пакет /home/marcel/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2.2/lib/rake/rake_test_loader Запущено F ============================================================================================ Ошибка: test: POST«Создать» с действительным входом (адрес электронной почты и пароль) следует перенаправить на страницу пользователя.(SessionsControllerTest) [test / functions / session_controller_test.rb: 58]: Ожидается, что хотя бы 1 элемент соответствует «title», найден 0. Это не так.=============================================================================== E =============================================================================== Ошибка: test: POST 'create' с действительным именем входа (адрес электронной почты и пароль) должен войти в систему пользователя.(SessionsControllerTest): NameError: неопределенная локальная переменная или метод `controller 'для
test/functional/sessions_controller_test.rb:53:in `block (3 levels) in <class:SessionsControllerTest>'
====================================================================================== Закончено за 0.957865676 секунд.7 тестов, 6 подтверждений, 1 сбоев, 1 ошибок, 0 ожиданий, 0 пропусков, 0 уведомлений 0% пройдено 7,31 тестов / с, 6,26 подтверждений / с рейка отменено!Команда завершилась неудачно со статусом (1): [/home/marcel/.rvm/rubies/ruby-1.9.2-p290/b ...] Задачи: TOP => test: недавний (Просмотр полной трассировки при запуске задачи с -trace)
Это оригинальный (RSpec) тест:
describe SessionsController do
...
describe "POST 'create'" do
...
describe "with valid email and password" do
before(:each) do
@user = Factory(:user)
@attr = { :email => @user.email, :password => @user.password }
end
it "should sign the user in" do
post :create, :session => @attr
controller.current_user.should == @user
controller.should be_signed_in
end
it "should redirect to the user show page" do
post :create, :session => @attr
response.should redirect_to(user_path(@user))
end
end
end
end
, и это мой перевод (в Test :: Unit + Sholuda-context) теста:
class SessionsControllerTest < ActionController::TestCase
context "POST 'create'" do
context "with valid signin (email and password)" do
setup do
@attr = {email: "test@email.tst", password: "testpwd"}
@user=User.create! @attr.merge!({name: "test_user", password_confirmation: "testpwd"})
end
should "sign in the user" do
post :create, :session => @attr
assert_equal @user, controller.current_user
end
should "redirect to the user show page" do
post :create, :session => @attr
assert_select "title", /Show/
end
end
end
end
Кто-нибудь знает, как заставить мой тест работать?