ibaralf
ibaralf

Reputation: 12528

RSPEC: Is it possible to run other spec file inside a spec file

I know best practice is to make tests run independently.

I am using Rspec to run Selenium Webdriver tests. If I create and teardown users-groups-other models for every specific test case, the test run time goes up significantly (30 mins or so).

So I separated the spec files into create_..., delete_..., and would like to call these spec files inside one spec file. Is this possible and is it a good or bad way of setting up the tests?

Something like:

create_users_spec.rb
create_user_groups_spec.rb
create_dashboard_spec.rb
==> run some tests....
delete_dashboard_spec.rb
delete_user_groups_spec.rb
delete_users_spec.rb

run_all_spec.rb => run all of the spec files above, so you can see that 
                   it needs to run in a certain sequence

Upvotes: 2

Views: 872

Answers (2)

Andy
Andy

Reputation: 300

Perhaps organizing your tests with context and using before(:each) and before(:all) judiciously would yield a performance boost. Simplifying the database, or using a library like FactoryGirl can also help.

Upvotes: 0

tilthouse
tilthouse

Reputation: 575

You really want to be able to run tests independently. Having to run all tests, even "just" all tests in a given file, seems to me like an unacceptable delay in the development process. It also makes in hard to use tools like Guard that run tests for you based on a file watcher.

If there is really something that needs to run before, for example, every request spec, you can do something like:

# spec_helper.rb
RSpec.configure do |config|
  config.before :all, type: :request do
    # do stuff
  end
end

But also look at what you are trying to do. If you are just setting up model/database data for the tests, then you want fixtures, or better yet, factories. Look into FactoryGirl.

Upvotes: 1

Related Questions