Я решил написать некоторые спецификации запросов, в дополнение к моим сценариям с огурцами. Но не удалось в моем первом примере:
Таким образом, в моем goalController есть метод put:
def achieve
@goal.update_attribute(:achieved, true)
redirect_to :back
end
А это пример:
# -*- coding: utf-8 -*-
require 'spec_helper'
describe "Achievements" do
before(:all) do
@bob = Factory(:user, :email => "bob@mail.com", :password => "qweqwe", :password_confirmation => "qweqwe", :money => 500)
@achieve = Factory(:goal, :user => @bob, :title => "Notebook", :price => 100, :achieved => false)
login_user('bob@mail.com', 'qweqwe')
end
it 'can not be achieved twice' do
visit dashboard_path
put achieve_user_goal_path(@bob, @achieve) #Passes it well
@achieve.reload #same with or without this line
@achieve.achieved.should equal true #Fails
end
end
Таким образом, после выставленного запроса поле «выполняется» становится истинным. Он отлично работает в моем приложении и на этапе огурца, но не в этом примере rspec. Это как rspec просто игнорирует строку с «пут».