Мне нужно знать, как проверить это действие контроллера
def create_mobile
if mobile_user = MobileUser.authenticate(params[:email], params[:password])
session[:mobile_user_id] = mobile_user.id
respond_to do |format|
format.json { head :ok }
end
else
respond_to do |format|
format.json { head :unauthorised }
end
end
end
Маршрут представляет собой пост-запрос к session / create_mobile, и, как вы можете видеть, действие реагирует только на json
Моя текущая спецификация контроллера выглядит так
describe SessionsController, "Logging in" do
before(:each) do
@mobile_user = FactoryGirl.create(:valid_mobile_user)
end
it "Should log in mobile user" do
@request.env["HTTP_ACCEPT"] = "application/json"
post :create_mobile, {:password => @mobile_user.password, :email => @mobile_user.email}
response.should be_success
end
it "should fail log in mobile user" do
@request.env["HTTP_ACCEPT"] = "application/json"
post :create_mobile, {:password => 'joe', :email => @mobile_user.email}
response.should_not be_success
end
конец
Результаты теста в
1) SessionsController Logging in should log in mobile user
Failure/Error: response.should be_success
expected success? to return true, got false
# ./spec/controllers/sessions_controller_spec.rb:11:in `block (2 levels) in <top (required)>'
Таким образом, либо проблема с кодом моего приложения, либо проблема с моим тестовым кодом, но в любом случае не возникает проблем с методом authenticate при прохождении спецификации модели MobileUser, которая выглядит следующим образом
it "should authenticate" do
mu = FactoryGirl.create(:valid_mobile_user)
assert_equal 1, MobileUser.count
assert_equal mu, MobileUser.authenticate(mu.email, mu.password)
end
Любая помощь в выяснении этого очень ценится.
Заранее спасибо
UPDATE
Как предлагается ниже, используя
post :create_mobile, {:password => 'joe', :email => @mobile_user.email} :format => :json
или используя
@request.env["HTTP_ACCEPT"] = "application/json"
или их комбинация не имеет значения
ОБНОВЛЕНИЕ 2
Тест только начал работать без причины, которую я могу понять (кроме того, что я никогда не понимал, почему он не работал в первую очередь).
Совершенно странно!