Ruby testing tools

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Ruby testing tools - Presentation Transcript

    1. Rails testing tools Agile - the Rails Way
    2. Testing
        • Test::Unit
        • Shoulda
        • webrat
        • RSpec
        • Cucumber
      The base tool used for testing in Rails Makes tests easier on the eyes & fingers Expressive acceptance test library Behavior driven testing framework Plain text based BDD testing tool
    3. An example feature
      • Feature: Find love
      • In order to find love
      • I want to search the internet
      Scenario: looking (in all the wrong places) Given I have opened "http://www.google.com/" When I search for "love" Then I should see a link to "http://zombieharmony.com/" -> with text "Yes, even you can find love!"
    4. The feature name
      • Feature: Find love
      • In order to find love
      • I want to search the internet
      Scenario: looking (in all the wrong places) Given I have opened "http://www.google.com/" When I search for "love" Then I should see a link to "http://zombieharmony.com/" -> with text "Yes, even you can find love!"
    5. The feature definition
      • Feature: Find love
      • In order to find love
      • I want to search the internet
      Scenario: Searching for JS.Class docs Given I have opened "http://www.google.com/" When I search for "love" Then I should see a link to "http://zombieharmony.com/" -> with text "Yes, even you can find love!"
    6. An example scenario
      • Feature: Find love
      • In order to find love
      • I want to search the internet
      Scenario: looking (in all the wrong places) Given I have opened "http://www.google.com/" When I search for "love" Then I should see a link to "http://zombieharmony.com/" -> with text "Yes, even you can find love!"
    7. The scenario name
      • Feature: Find love
      • In order to find love
      • I want to search the internet
      Scenario: looking (in all the wrong places) Given I have opened "http://www.google.com/" When I search for "love" Then I should see a link to "http://zombieharmony.com/" -> with text "Yes, even you can find love!"
    8. Given . . .
      • Feature: Find love
      • In order to find love
      • I want to search the internet
      Scenario: looking (in all the wrong places) Given I have opened "http://www.google.com/" When I search for "love" Then I should see a link to "http://zombieharmony.com/" -> with text "Yes, even you can find love!"
    9. When . . .
      • Feature: Fidn love
      • In order to find love
      • I want to search the internet
      Scenario: looking (in all the wrong places) Given I have opened "http://www.google.com/" When I search for "love" Then I should see a link to "http://zombieharmony.com/" -> with text "Yes, even you can find love!"
    10. Then . . .
      • Feature: Find love
      • In order to find love
      • I want to search the internet
      Scenario: looking (in all the wrong places) Given I have opened "http://www.google.com/" When I search for "love" Then I should see a link to "http://zombieharmony.com/" -> with text "Yes, even you can find love!"
    11. The step definitions
      • Given /^I have opened " ([^"]*) "$/ do | url |
      • visit url
      • end
      • When /^I search for " ([^"]*) "$/ do | query |
      • fill_in 'q' , :with => query
      • click_button 'Google Search'
      • end
      • Then /^I should see a link to " ([^"]*) " with text " ([^"]*) "$/ do | url , text |
      • response_body.should have_selector( "a[href='#{ url }']" ) do |element|
      • element .should contain( text )
      • end
      • end
    12. Given definition
      • Given /^I have opened " ([^"]*) "$/ do | url |
      • visit url
      • end
      • When /^I search for "([^"]*)"$/ do |query|
      • fill_in 'q', :with => query
      • click_button 'Google Search'
      • end
      • Then /^I should see a link to "([^"]*)" with text "([^"]*)"$/ do |url, text|
      • response_body.should have_selector("a[href='#{ url }']") do |element|
      • element.should contain(text)
      • end
      • end
    13. When definition
      • Given /^I have opened "([^"]*)"$/ do |url|
      • visit url
      • end
      • When /^I search for " ([^"]*) "$/ do | query |
      • fill_in 'q', :with => query
      • click_button 'Google Search'
      • end
      • Then /^I should see a link to "([^"]*)" with text "([^"]*)"$/ do |url, text|
      • response_body.should have_selector("a[href='#{ url }']") do |element|
      • element.should contain(text)
      • end
      • end
    14. Then definition
      • Given /^I have opened "([^"]*)"$/ do |url|
      • visit url
      • end
      • When /^I search for "([^"]*)"$/ do |query|
      • fill_in 'q', :with => query
      • click_button 'Google Search'
      • end
      • Then /^I should see a link to " ([^"]*) " with text " ([^"]*) "$/ do | url , text |
      • response_body.should have_selector( "a[href='#{ url }']" ) do |element|
      • element. should contain( text )
      • end
      • end
    15. Cucumber
      • Given /^I have opened "([^"]*)"$/ do | url |
      • visit url
      • end
      • When /^I search for "([^"]*)"$/ do | query |
      • fill_in 'q', :with => query
      • click_button 'Google Search'
      • end
      • Then /^I should see a link to "([^"]*)" with text "([^"]*)"$/ do | url , text |
      • response_body.should have_selector("a[href='#{ url }']") do |element|
      • element.should contain(text)
      • end
      • end
    16. webrat
      • Given /^I have opened "([^"]*)"$/ do |url|
      • visit url
      • end
      • When /^I search for "([^"]*)"$/ do |query|
      • fill_in 'q', :with => query
      • click_button 'Google Search'
      • end
      • Then /^I should see a link to "([^"]*)" with text "([^"]*)"$/ do |url, text|
      • response_body.should have_selector ("a[href='#{ url }']") do |element|
      • element.should contain (text)
      • end
      • end
    17. RSpec
      • Given /^I have opened "([^"]*)"$/ do |url|
      • visit url
      • end
      • When /^I search for "([^"]*)"$/ do |query|
      • fill_in 'q', :with => query
      • click_button 'Google Search'
      • end
      • Then /^I should see a link to "([^"]*)" with text "([^"]*)"$/ do |url, text|
      • response_body.should have_selector("a[href='#{ url }']") do |element|
      • element. should contain(text)
      • end
      • end
    18. Controller test
      • describe LoveController do
      • it { should route( :get , 'search' ).to( :action => :find ) }
      • describe 'lookin for love' do
      • before { get :find , :q => 'someone to hold me - ever so gently' }
      • it { should respond_with 404 }
      • it { should respond_with_content_type 'text/html' }
      • end
      • end
    19. RSpec
      • describe LoveController do
      • it { should route(:get, 'search').to(:action => :find) }
      • describe 'lookin for love' do
      • before { get :find, :q => 'someone to hold me - ever so gently' }
      • it { should respond_with 404 }
      • it { should respond_with_content_type 'text/html' }
      • end
      • end
    20. Shoulda
      • describe LoveController do
      • it { should route (:get, 'search'). to (:action => :find) }
      • describe 'lookin for love' do
      • before { get :find, :q => 'someone to hold me - ever so gently' }
      • it { should respond_with 404 }
      • it { should respond_with_content_type 'text/html' }
      • end
      • end
    21. When to use what
      • For user acceptance (view) testing:
        • Cucumber
        • webrat
        • RSpec
      • For functional (controller) testing:
        • Rspec
        • Shoulda
        • Factory Girl (not covered here)
      • For unit (model) testing:
        • Shoulda
        • Test::Unit
    22. Pimp my project
      • Pimp my data:
        • Factory Girl
        • Mocha
        • Fixtures
      • Pimp my code:
        • Autotest (part of ZenTest)
        • RCov (code coverage tool)
        • metric_fu (if ninjas created reports)
    23. Comparing Java & Ruby
      • Ruby
      • Community driven
      • Surgical tools
      • Duck typing
      • Wild west
      • 15 years old
      • Java
      • Committee driven
      • Swiss Army Knife
      • Static typing
      • JCP
      • 14 years old
    SlideShare Zeitgeist 2009

    + bsgbryanbsgbryan Nominate

    custom

    41 views, 0 favs, 0 embeds more stats

    Some of the tools available with a small usage exam more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 41
      • 41 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?