O'Reilly logo

Learning Rails: Live Edition by Edd Dumbill, Simon St. Laurent

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Integration Testing

Integration testing is the most complicated testing Rails supports directly. It tests complete requests coming in from the outside, running through routing, controllers, models, the database, and even views. Rails does not generate any integration tests by default, as creating them requires detailed knowledge of the complete application and what it is supposed to do. Integration tests are stored in tests/integration and look much like the classes for other kinds of tests. They call similar methods and also make assertions, but the assertions are different and the flow can cover multiple interactions, as Example 12-15 demonstrates.

Example 12-15. An integration test that tries adding a student

require 'test_helper' # Integration tests covering the manipulation of student objects class StudentsTest < ActionController::IntegrationTest def test_adding_a_student # get the new student form get '/students/new' # could be new_students_path # check there are boxes to put the name in # trivial in our case, but illustrates how to check output HTML assert_select "input[type=text][name='student[given_name]']" assert_select "input[type=text][name='student[family_name]']" assert_difference('Student.count') do post '/students/create', :student => { :given_name => "Fred", :family_name => "Smith", :date_of_birth => "1999-09-01", :grade_point_average => 2.0, :start_date => "2008-09-01" } end assert_redirected_to "/students/#{assigns(:student).id}" follow_redirect! # for completeness, ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required