Ruby on rails开发从头来(windows)(二十二)-测试Controller - 编程入门网
f test_login_with_invalid_user
post :login, :user => {:name => ''fred'', :password => ''opensesame''}
assert_response :success
assert_equal "Invalid user/password combination", flash[:notice]
end
大家一定看到了,这是使用了一个不存在的用户名和密码来测试login。 运行测试,输出结果如下: Finished in 0.609 seconds.2 tests, 5 assertions, 0 failures, 0 errors 和上一个测试方法相对的,这里代码里是两个断言,根据输出也是两个,挺奇怪的事情。 5.测试了不存在的用户,现在我们来测试用户存在的情况。 修改fixtures目录下的users.yml文件,我们还使用上面的用户名和密码: # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html fred: id: 1 name: fred hashed_password: <%= Digest::SHA1.hexdigest(''abracadabra'') %> 然后给login_controller_test.rb添加fixtures :users,指定使用users.yml文件。 再添加方法: def test_login_with_valid_user post :login, :user => {:name => ''fred'', :password => ''abracadabra''} assert_redirected_to :action => "index" assert_not_nil(session[:user_id]) user = User.find(session[:user_id]) assert_equal ''fred'', user.name end 在这里方法里,我们指定了和yml文件中定义的用户名相一致的数据,并且判断是否定位到index,再判断用户的id是否已经保存在session中。 根据前面测试Model时候的内容,我们在yml文件中定义的数据会被加入到数据库中,这样,这个方法里的三个断言都应该通过才对。 OK了,运行测试,输出结果: Finished in 0.125 seconds.3 tests, 8 assertions, 0 failures, 0 errors 嗯,所有的断言都通过了。 好了,这次就到这里。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |