A quick list of changes we've discovered in moving from RSpec 2 to RSpec 1. Some may produce deprecation warnings -- other changes simply fail the test. Please post anything you discover that's not on this list and I'll add it.
RSpec 1.x | RSpec 2.x |
---|---|
GENERAL | |
@value.should be_close(300.0/72, 1e-4) | @value.should be_within(1e-4).of(300.0/72) |
CONTROLLER SPECS | |
integrated_views | render_views |
reverse order of assertion and HTTP verb method: | |
controller.should render_template("edit") get :edit, :name => "fred" | get :edit, :name => "fred" response.should render_template("edit") |
assigns[:instance_var].should | assigns(:instance_var).should |
parameter hash values can be numeric | parameter hash values must be strings |
put :update, :user_id => 3 | put :update, :user_id => "3" |
view template file not required | template file required or set expectation: controller.should_receive(:render) -- or stub it: controller.stub!(:render) |
VIEW SPECS | |
assigns[:instance_var] = value | assign(:instance_var, value) |
response.body | rendered |
include_text | include |
have_tag | have_selector |
with_tag | have_selector |
:text | :content |
have_tag arguments don't need quotes | numbers or strings beginning with / must be quoted |
escape URL strings | do not escape URL strings |
response.should have_tag('form[action=/docs/111?id=44&x=1]') do with_tag 'input[type=hidden][name=x][value=55]' end | |
rendered.should have_selector('form[action="/docs/111?id=44&x="1"]') do |tags| tags.should have_selector 'input[type=hidden][name=x][value="55"]' end | |
response.should have_tag('td') do with_tag 'span', :text => "Frank N. Stein" end | |
rendered.should have_selector('td') do |tags| tags.should have_selector 'span', :content => "Frank N. Stein" end | |
For more information on changes from have_tag to have_selector, check this out. | |
ROUTING SPECS | |
{:get => 'all/data/in/db'}.should_not be_routeable | {:get => 'all/data/in/db'}.should_not be_routable |
route_for no longer supported | |
assertions agains query parameters no longer supported: | |
{:get => 'c/a?query_param=value'}.should route_to(:controller => 'c', :action => 'a', :query_param => 'value') | |
{:get => 'c/a?query_param=value'}.should route_to(:controller => 'c', :action => 'a') | |
MOCKS & STUBS | |
stub_model(Widget, :new_record? => true) | stub_model(Widget).as_new_record |