我試圖更新請求規範中的記錄,但它沒有更新。在現實生活中做到這一點。這裏是規格:測試更新請求規範中的記錄
describe "sessions" do
before do
@user = FactoryGirl.create(:user)
@api_key = FactoryGirl.create(:api_key)
end
it "is updated properly" do
put "/api/v1/users/#{@user.id}?user_email=#{@user.email}&auth_token=#{@user.authentication_token}", {user: {name: "New Name"}},{ "HTTP_AUTHORIZATION"=>"Token token=\"#{@api_key.access_token}\"" }
@user.name.should eq("New Name")
response.status.should be(201)
end
end
上述測試失敗,出現錯誤:
Failure/Error: @user.name.should eq("New Name")
expected: "New Name"
got: "nil"
(compared using ==)
名稱是一個可選參數,所以我不把它的工廠。例如,如果我確實設置了該行,則表示got: "Bill"
。
。爲更完整,這裏的工廠:
FactoryGirl.define do
sequence :email do |n|
"test#{n}@vitogo.com"
end
factory :user do
email
password '12345678'
password_confirmation '12345678'
goal_id 1
experience_level_id 1
gender 'Female'
factory :admin do
after(:create) { |user| user.role = 'admin'; user.save }
end
end
end
FactoryGirl.define do
factory :api_key do
access_token "MyString"
end
end
錯誤通常是在您沒有比較相同的東西時。 I.e如果你將一個對象與一個數組進行比較,你會得到這個錯誤。或者如果你將一個數組與一個對象進行比較,你會得到這個錯誤。如果它是一個你正在比較的對象,它需要是'obj <-> obj'(如果有意義的話) – David