3
rspecでActiveRecordを作成するときに、有効なレコードにフィクスチャを使用します。 しかし、テストでfxituresを使用すると、検証に失敗するようです。 次の例では、従業員は完全に有効であるように見えますが、仕様に関連する検証では無効となっています。例についてはActiveRecordを検証する際、有効になっていますか? => falseですが、errors.countにはエラーはありません。どうして?
class Employee < ActiveRecord::Base
validates_presence_of :email
end
class User < ActiveRecord::Base
validates_associated :employee
end
#Command line debugger in 'debugger' (below) returns:
Employee.find(745185059).errors.count # => 0
Employee.find(745185059).errors.full_messages # => []
Employee.find(745185059).valid? # => true
:
describe SessionsController do
fixtures :users, :employees
describe "Logging in by cookie" do
def set_remember_token token, time
@user[:remember_token] = token;
@user[:remember_token_expires_at] = time
debugger
@user.save! # THIS SAYS THE EMPLOYEE IS INVALID, but why, if the fixtures are good?
end
it 'logs in with cookie' do
stub!(:cookies).and_return({ :auth_token => 'hello!' })
logged_in?.should be_true
end
end
end
任意のアイデア私が検証の失敗を取得する理由は? (もちろん、私は中間コードをたくさん切り取っていますが、エラーが完全にどこか他の場所にある可能性があります)
それはトリックでした! 私も知らなかった 従業員(123).send(検証) は動作しません。あなたの時間のおかげでおかげで、オマール! – btelles