On 16 Jul 2014, at 05:06, Aaron Kromer <[email protected]> wrote:

> This is caused by your use of before(:all) blocks which create data in the 
> database. If you are using the :transaction strategy, which it seems you are, 
> then any data added in before(:all) is created prior to the transaction. This 
> also means it's left over after the example. I'm guessing you want to use the 
> :all block for "performance reasons". However, that may not be where your 
> time is being spent. For example, your "Clients Page Has pagination and lists 
> all clients" spec (spec/features/clients_page_spec.rb:24) took 13.25 seconds 
> on my machine. That time was not spent creating the objects, but instead 
> verifying everything on the page.
> 
> If you really must use before(:all) then you need to manually clean it up or 
> change your configs. See the following references for more info:
> 
> http://toctan.com/articles/be-careful-with-before(:all)-in-rspec/
> https://groups.google.com/forum/#!topic/database_cleaner/qUp5Hp6N0eY
> http://www.ultrasaurus.com/2014/01/rspec-mixing-transcations-truncation-database-clearner-strategies/
> 
> 
> On Tue, Jul 15, 2014 at 4:58 PM, Myron Marston <[email protected]> 
> wrote:
> On Tuesday, July 15, 2014 12:48:56 AM UTC-7, Javix wrote:
> 
> 
> On Wednesday, July 9, 2014 10:24:33 PM UTC+2, Javix wrote:
> I can't figure out why my example fails sometimes and sometimes not:
> 
> describe ClientsController do
>   let(:admin) { create(:admin) }
> 
>   before(:each) { sign_in admin }
> 
>   describe 'GET #index' do
>     Client.delete_all
>     let!(:clients) { Array.new(3) { create(:client) } }
>     it "populates an array of all clients" do
> 
>       get :index
>       expect(assigns(:clients)).to match_array(clients)
>     end
> 
>     it "renders the :index template" do
>       get :index
>       expect(response).to render_template :index
>     end
>    end
> end
> 
> I set up DatabaseCleaner as follows in spec_helper:
> 
> config.before(:suite) do
>     DatabaseCleaner.clean_with(:truncation)
>   end
> 
>   config.before(:each) do
>     DatabaseCleaner.strategy = :transaction
>   end
> 
>   config.before(:each, js: true) do
>     DatabaseCleaner.strategy = :truncation
>   end
> 
>   config.before(:each) do
>     DatabaseCleaner.start
>   end
> 
>   config.after(:each) do
>     DatabaseCleaner.clean
>   end
> 
> and set up fixtures to false as well (spec_helper):
> 
> config.use_transactional_fixtures = false
> 
> No matter if I keep the line or not:
> 
> Client.delete_all
> 
> it fails the first time (when I run all the tests) and passes when I run the 
> spec separately.
> 
> I also defined a shared_db_connection in support folder:
> 
> class ActiveRecord::Base
>   mattr_accessor :shared_connection
>   @@shared_connection = nil
> 
>   def self.connection
>     @@shared_connection || retrieve_connection
>   end
> end
> ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
> 
> For a more complete description of this setup, check out Avdi Grimm's 
> Virtuous Code blog:
>   
> http://devblog.avdi.org/2012/08/31/configuring-database_cleaner-with-rails-rspec-capybara-and-selenium/
> 
> Any idea? THANK YOU
> 
> 
> @Myron: I pushed to remote a branch that has RSpec features implemented. When 
> running all the specs, tests failed (2). When running the same but 
> separately, they pass.
> 
> You can clone the branch from 
> https://github.com/Javix/jlc-invest/tree/rspec_features_back
> 
> Thank you. 
> 
> Thanks.  I cloned it and tried to run your specs, but I'm getting 187 
> failures out of 190 specs.  They're all failing with errors like this:
> 
> https://gist.github.com/myronmarston/ecc67c1a9f9c2ed89491
> 
> I had to install postgres for this (I haven't used it in years) and I haven't 
> used rails in years so I'm pretty rusty with debugging issues with this.  I 
> also don't have much time to invest in this.  Sorry :(.
> 
> Maybe someone else can volunteer to take a look at your project?
> 
> Myron
Not a problem, Myron.
For those who could take a look at the error, to set up the projet:
- have Postgresql installed
- clone the branch https://github.com/Javix/jlc-invest/tree/rspec_features_back
- run bundle install
- rake db:create
- rake db:migrate
- [optional] populate a database: rake db:populate (see 
lib/tasks/sample_data.rake for more details).
- rake db:test:prepare
- rspec

Thank you.
> 
>  
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rspec/17bb8aae-a3a6-4050-9b11-0f927145eb90%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
> 
> 
> -- 
> You received this message because you are subscribed to a topic in the Google 
> Groups "rspec" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/rspec/bwqHFUsldbg/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to 
> [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rspec/CAKCESdjCm%2BS4UrYyLHFLJTMWy1R%3DkjQCU%2BCKg9QyvmMv3Zva0w%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/1F6FAE94-2181-4FB5-90E7-95725EE26D61%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to