0

要求仕様のレコードを更新しようとしていますが、更新されません。実生活でそれを行うことはうまくいきます。仕様は次のとおりです。

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 ==)

Name はオプションのパラメーターなので、Factory では設定しません。私がそれを設定した場合、行は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
4

1 に答える 1

1

@userPUT 呼び出しの後にリロードするだけです@user.reload

于 2013-10-27T20:36:08.853 に答える