新しいユーザー作成も管理設定で構成されているかどうかをテストするためのテストを書きました。ここではテストがある:Rspecの検証に失敗しました - 属性を空白にすることはできませんが、空白ではありません
describe User do
before(:each) do
@attr = {
:name => "Example User",
:email => "[email protected]",
:admin => "f"
}
end
it "should create a new instance given valid attributes" do
User.create!(@attr)
end
it "should require a name" do
no_name_user = User.new(@attr.merge(:name => ""))
no_name_user.should_not be_valid
end
it "should require an email" do
no_email_user = User.new(@attr.merge(:email => ""))
no_email_user.should_not be_valid
end
it "should require an admin setting" do
no_admin_user = User.new(@attr.merge(:admin => ""))
no_admin_user.should_not be_valid
end
end
その後、私は私のUserモデルに:
class User < ActiveRecord::Base
attr_accessible :name, :email, :admin
has_many :ownerships
has_many :projects, :through => :ownerships
email_regex = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
validates :name, :presence => true,
:length => { :maximum => 50 }
validates :email, :presence => true,
:format => { :with => email_regex },
:uniqueness => { :case_sensitive => false }
validates :admin, :presence => true
end
私は明らかに管理者設定を使用して、新しいユーザーを作成し、なぜそれが偽だと言っていますか?管理者設定の移行をadmin:booleanとして作成しました。私は間違ったことをしましたか?
ここでエラーです:私はコメントアウトしたときに、奇妙なことに
Failures:
1) User should create a new instance given valid attributes
Failure/Error: User.create!(@attr)
ActiveRecord::RecordInvalid:
Validation failed: Admin can't be blank
# ./spec/models/user_spec.rb:14:in `block (2 levels) in <top (required)>'
検証:管理者、:存在は=> trueの場合、テストが正しく、ユーザーが作成されますが、上の失敗「ユーザーは、管理者の設定を必要とすべきである」
編集:@attr:adminの値を "t"に変更すると機能します!値がfalseの場合、なぜ動作しませんか? rails guidesから
実際のエラーが役に立ちます。 – bricker
障害: 1)有効な与えられた新しいインスタンスを作成する必要があり、ユーザーは 失敗/エラー属性:User.create(@ attrという) のActiveRecord :: RecordInvalid:! 検証に失敗しました:管理者が空白 #の./specすることはできません/models/user_spec.rb:14:in 'ブロック(2レベル)' –