when does factory girl create objects in db?

前端 未结 1 1412
挽巷
挽巷 2021-02-05 04:13

I am trying to simulate a session using FactoryGirl/shoulda (it worked with fixtures but i am having problems with using factories). I have following f

相关标签:
1条回答
  • 2021-02-05 05:01

    Factory(:user) is a shortcut for Factory.create(:user) so within your setup you are creating two objects and saving them to the database.

    Factory.build(:user) will create you a user record without saving it to the DB.

    EDIT

    Within your session_user factory you are creating a user and then creating another within your test setup. FactoryGirl will create a new user record because you have the association in the session_user factory.

    You can either get your user instance from the session_user object as follows :-

     context "normal user" do
      setup do
       session = Factory(:session_user)  
       @request.session[:session_id] = session.session_id
       @request.session[:user_id] = session.user_id
      end
    

    or you can add some details to the user factory to ensure unique name and email addresses as follows :-

    Factory.define :user do |u| 
     u.sequence(:login) {|n| "quentin#{n}" }
     u.sequence(:email) {|n| "quentin#{n}@example.com"}
    end
    
    0 讨论(0)
提交回复
热议问题