FactoryGirl
/を使用してセッションをシミュレートしようとしていますshoulda
(フィクスチャでは機能しましたが、ファクトリの使用に問題があります)。私は次の工場を持っています(ユーザーログインと電子メールの両方にunique
検証があります):
Factory.define :user do |u|
u.login 'quentin'
u.email 'quentin@example.com'
end
Factory.define :session_user, :class => Session do |ses|
ses.association :user, :factory => :user
ses.session_id 'session_user'
end
そしてここにテストがあります
class MessagesControllerTest < ActionController::TestCase
context "normal user" do
setup do
@request.session[:user_id]=Factory(:user).id
@request.session[:session_id]=Factory(:session_user).session_id
end
should "be able to access new message creation" do
get :new
assert_response :success
end
end
end
しかし、実行するrake test:functionals
と、このテスト結果が得られます
1) Error:
test: normal user should be able to access new message creation. (MessagesControllerTest):
ActiveRecord::RecordInvalid: Validation failed: Account name already exists!, Email already exists!
これは、テスト セットアップでレコードを参照しているときに、レコードが既に db に存在することを意味します。ここでわからないことがありますか?起動FactoryGirl
時にdbにすべての工場を作成しますか?
レール 2.3.5/shoulda/FactoryGirl