sgb*_*ett 1 ruby activerecord rspec ruby-on-rails ruby-on-rails-3
这让我疯了.我已经把它剥离到最低限度而不会失去上下文(我想!)
我想要做的就是检查当我更新一个值并将其保存到数据库时,该值已保存.我想这样做是因为我需要编写一些其他代码,这些代码在before_save回调中有条件地阻止了这一点,并且在我确定这个工作之前我无法测试它!
工厂和规格在下面,我确定它真的很愚蠢,但我无法弄明白......
FactoryGirl.define do
factory :programme do
name 'Trainee Programme'
end
factory :membership do
programme
end
factory :specialty do
sequence(:name) { |n| "Specialty #{n}" }
end
factory :user do
sequence(:email) { |n| "factorygirl-user-#{n}@remailer.org" }
password 'password'
password_confirmation 'password'
factory :trainee, class: User do
sequence(:email) { |n| "factorygirl-trainee-#{n}@remailer.org" }
name 'Factory Girl Trainee'
after(:create) do |user|
FactoryGirl.create(:membership, user: user, start_date: 1.day.ago)
end
end
end
end
describe Membership do
let(:trainee) { FactoryGirl.create(:trainee) }
it 'sets specialty' do
puts trainee.current_membership.inspect
trainee.current_membership.specialty = specialty
puts trainee.current_membership.inspect
trainee.current_membership.save!
puts trainee.current_membership.inspect
expect(trainee.current_membership.specialty).to eq(specialty)
end
end
Run Code Online (Sandbox Code Playgroud)
规范失败,因为期望值为零.当我运行代码时,我得到的调试输出是:
#<Membership id: 11, user_id: 11, programme_id: 11, start_date: "2015-03-10", end_date: nil, created_at: "2015-03-11 22:02:51", updated_at: "2015-03-11 22:02:51", options: {}, specialty_id: nil, membership_type_id: nil>
#<Membership id: 11, user_id: 11, programme_id: 11, start_date: "2015-03-10", end_date: nil, created_at: "2015-03-11 22:02:51", updated_at: "2015-03-11 22:02:51", options: {}, specialty_id: nil, membership_type_id: nil>
#<Membership id: 11, user_id: 11, programme_id: 11, start_date: "2015-03-10", end_date: nil, created_at: "2015-03-11 22:02:51", updated_at: "2015-03-11 22:02:51", options: {}, specialty_id: nil, membership_type_id: nil>
Run Code Online (Sandbox Code Playgroud)
所以它好像从未发生过专业的分配?
尝试重新加载trainee,例如
expect(trainee.reload.current_membership.specialty).to eq(specialty)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1276 次 |
| 最近记录: |