My login page has a login form with three fields:login,password,and
image
verification code,now how to test it?
require File.dirname(FILE) + “/…/spec_helper”
http://www.kirkbushell.com/articles/testing-using-rspec-part-2-the-controller
http://blog.enjoyrails.com/2008/02/18/rspec-basic/
http://matthewkwilliams.com/index.php/tag/rspec/
describe AdminController do
integrate_views
before(:each) do
@params = {:login => ‘username’, :pass => ‘password’, :code_image =>
“1234”}
end
it “should redirect after input login and pass” do
session.should_receive(:[]).with(:code).and_return(“1234”) # this
does’nt work!!!
#session.stub!(:[]).with(:code).and_return “1234”
Admin.should_receive(:authenticate).with(params[:login],
params[:pass]).and_return(true)
post ‘/’, @params
response.should be_redirect
end
end
错误æ示是:
Spec::Mocks::MockExpectationError in ‘AdminController should redirect
after
input login and pass’
#ActionController::TestSession:0x9e77198 received :[] with unexpected
arguments
expected: (:code)
got: (“flash”)
/home/qichunren/gems/actionpack-2.1.0/lib/action_controller/flash.rb:157:in
flash_without_components' /home/qichunren/gems/actionpack-2.1.0/lib/action_controller/components.rb:105:in
flash’
/home/qichunren/gems/actionpack-2.1.0/lib/action_controller/flash.rb:167:in
assign_shortcuts' /home/qichunren/gems/actionpack-2.1.0/lib/action_controller/base.rb:523:in
process_without_filters’
/home/qichunren/gems/actionpack-2.1.0/lib/action_controller/filters.rb:569:in
process_without_session_management_support' /home/qichunren/gems/actionpack-2.1.0/lib/action_controller/session_management.rb:130:in
process_without_test’
/home/qichunren/gems/actionpack-2.1.0/lib/action_controller/test_process.rb:16:in
process' /home/qichunren/gems/actionpack-2.1.0/lib/action_controller/test_process.rb:394:in
process’
/home/qichunren/gems/actionpack-2.1.0/lib/action_controller/test_process.rb:365:in
`post’
./spec/controllers/admin_controller_test.rb:31:
Finished in 0.023053 seconds