Factory Girl / Capybara deleting records from database mid-test?

前端 未结 4 1408
野趣味
野趣味 2021-02-19 10:10

Working with RSpec & Capybara, I\'m getting an interesting test failure mode which goes away with a few subtle rearrangements of lines in the test case...stuff that shouldn\

4条回答
  •  长情又很酷
    2021-02-19 10:31

    This isn't technically an answer, more of a comment but to clarify the code it's the easiest mechanism.

    Can you try doing the following to help narrow down where the user's being destroyed

    describe "Sessions" do
      it 'allows user to login' do
        #line one
        user = Factory(:user)
        #For SO, this method hashes the input password and saves the record
        user.password! '2468'
    
    
    # check the user's definitely there before page load
    puts User.first
    
        #line two
        visit '/sessions/index'
    
    # check the user's still there after page load
    puts User.first.reload
    
    
        fill_in 'Email', :with => user.email
        fill_in 'Password', :with => '2468'
        click_button 'Sign in'
    
    # check the user's still there on submission (though evidently not)
    puts User.first.reload
    
        page.should have_content('Logged in')
      end
    end
    

    EDIT

    The fact that it works for you ok in real life but not in Capybara suggests that it may be a product of existing session information. When you're testing in the browser you're usually going off the back of previous work but Capybara is always starting from a clean session.

    You can easily see if you can reproduce the Capybara error in-browser by clearing all your cookies (as I'm sure you know) or by just switching to a new incognito window in Chrome/FF which is a nice quick way to get a clean session.

提交回复
热议问题