I know it is pretty fucking cliched; however, it is hard to go through a Ruby day without some surious testing. That's right, if you don't know what "TATFT" means than you haven't been doing craftsmen level software development for all that long. In this post we are going to take a newly formed Rails application and get it up to speed with some simple Cucumber style tests. In addition, this will be my first software based post, which is kind of exciting...I think.
The first thing that needs to be done is cracking open that Gemfile and let's add in these lines:
group :test do
gem 'cucumber-rails', :require => false
gem 'capybara-webkit'
gem 'database_cleaner'
end
If you are one of those people who feel the need to place version numbers in your Gemfile, go ahead. As an aside, I recommend NOT doing this. Use your Gemfile.lock and your version control du jour to keep gem versions inline with your dev and production platforms.
The three gems you added into your Rails application are as follows:
rails g cucumber:install
will also need to be run after bundle
installing the above gems.@javascript
tagged tests
in a headless environment. It does require you download/compile
QT-Webkit; however, this is a breeze with Homebrew (it is listed as
'qt')Once you finnish installing QT (Tested on 10.8.0 @2012.08.18 and working
great) you should head over to /railsAppRoot/features/support/env.rb
and add in this
string:
Capybara.javascript_driver = :webkit
And VOILA! You are ready to start testing! For a handy way to run commands/tests, using command line Vim and Tmux, read this post by someone way smarter than myself. Keep your eyes peeled for another post on Cucumber stories and how to write reusable yet sensible tests in your Rails app.