Automation test with Guard and Rubymine integration.
You may already know about rspec
and rubocop
, a testing tool and a checking tool (for ruby coding styles). They are not realted to be referred here in a same post but we’re using them these days in our company projects though. And actually we’re going to play with automation tests using guard
and its plugins today, which are guard-rspec
and guard-rubocop
.
Rubocop and RSpec
For you who haven’t heard about rubocop
and rspec
have a look here:
- https://github.com/bbatsov/rubocop
- https://github.com/rspec/rspec-rails
- http://rspec.info/
Automation
guard
helps us having things rerun automatically when new changes get saved. guard-rspec
gets a spec re-run when you change and save it, rubocop
gets fired by guard-rubocorp
immediately after any of your files got saved (of course only the ones in the rubocop.yml configuration list), specs get run by guard-rspec
when any of your spec gets changed and saved.
Note: One interesting thing is guard-rspec
re-runs only the spec recently changed, not the whole spec directory.
Firstly make sure you have guard
gem installed. Then add guard-rspec
and guard-rubocop
to the Gemfile:
1 2 3 4 |
group :development do gem 'guard-rspec', require: false gem 'guard-rubocop' end |
Secondly let’s generate the Guardfile
which contains the configurations.
1 |
guard init |
or by
1 2 |
guard init rubocop guard init rspec |
Lastly, open another console and type in guard
1 |
gnguyen@gnguyen-ubuntu ~/work/bookstore (master)*$ guard |
We now have specs and files automatically rerun/re-checked whenever new changes get saved 🙂
RubyMine integration
Once we have both Guard running and Rubymine installed, we can make them work together seamlessly with just a few more steps.
Step 1: Enable “Save files on frame deactivation”
Open the project directory with Rubymine
, go to File > Settings
then type save
in the Search box, make sure the checkbox for Save files on frame deactivation
is checked.
Step 2: Add Guard configuration
- Go to
Run > Edit
Configuration - Add new
IRB concolse
by clicking the+
sign - Name the new IRB console as ‘guard’ (or whatever you like)
- Set the Guard path in the IRB script field. We can retrieve this path by opening a new Terminal, navigate to the project directory and type
which guard
1 2 |
gnguyen@ubuntu ~/my_project$ which guard /home/gnguyen/.rvm/gems/ruby-2.0.0-p195@my_project/bin/guard |
That’s it, go to Run > Run "guard"
and see rubocop
and rspec
run when we save new changes.
Have fun.