Test/Spec has a wonderful - if largely unnoticed - feature: you can specify the superclass of contexts. The default is the ole' Test::Unit::TestCase, but that won't always do.
Let's say, hypothetically, you wanted to write some integration tests for your not-quite-shiny Rails app. You'd use ApplicationController::IntegrationTest, right? That way you can do things like and it would look up the routings and just do the right thing. Awesome.
get "/posts/34.html"
Except... things aren't quite so simple when using test/spec. Therefore, I bring you an illustrious, illustrative example:
require File.dirname(__FILE__) + '/../test_helper'
class UserStoriesTest < ActionController::IntegrationTest
fixtures :people, :openid_authentications, :password_authentications
context "User Stories", ActionController::IntegrationTest do
context "a person coming to the site to log in", ActionController::IntegrationTest do
specify "should see the welcome page" do
get '/'
template.should.be 'welcome/index'
status.should.be 200
end
specify "should be able to successfully log in with email and password..." do
post_via_redirect '/login.html', {:email => 'pete.thomas@xahoo.com', :password => 'test'}
template.should.be 'people/home'
status.should.be 200
end
end
end
end
0 comments:
Post a Comment