日本一区二区免费播放_麻豆导航_久久精品99_国产性av_色婷婷噜噜久久国产精品12p_av福利资源_精品综合久久

當(dāng)前位置:首頁(yè) > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計(jì)軟件教程 > 每天一劑Rails良藥之Testing Across Multiple Controllers

每天一劑Rails良藥之Testing Across Multiple Controllers
2010-01-14 07:09:34  作者:  來(lái)源:
Rails測(cè)試分三種:
1,關(guān)注于一個(gè)單獨(dú)的Model的單元測(cè)試Unit test
2,關(guān)注于一個(gè)單獨(dú)的Controller和它使用的models之間的交互的功能測(cè)試Functional test
3,關(guān)注story級(jí)的多個(gè)controllers的多個(gè)actions之間的交互的集成測(cè)試Integration test
今天我們就來(lái)看看跨越多個(gè)controllers的集成測(cè)試
IntegrationTesting/test/integration/stories_test.rb
Java代碼 復(fù)制代碼
  1. require "#{File.dirname(__FILE__)}/../test_helper"  
  2.   
  3. class StoriesTest < ActionController::IntegrationTest   
  4.   fixtures :accounts, :ledgers, :registers, :people   
  5.   
  6.   def test_signup_new_person   
  7.     go_to_login   
  8.     go_to_signup   
  9.     signup :name => "Bob",   
  10.            :user_name => "bob",   
  11.            :password => "secret"  
  12.   end   
  13.   
  14.   private  
  15.   def go_to_login   
  16.     get "/login"  
  17.     assert_response :success   
  18.     assert_template "login/index"  
  19.   end   
  20.   
  21.   def go_to_signup   
  22.     get "/signup"  
  23.     assert_response :success   
  24.     assert_template "signup/index"  
  25.   end   
  26.   
  27.   def signup(options)   
  28.     post "/signup", options   
  29.     assert_response :redirect   
  30.     follow_redirect!   
  31.     assert_response :success   
  32.     assert_template "ledger/index"  
  33.   end   
  34. end  

其中我們將一些通用的流程做成helper方法,如go_to_login,go_to_signup,signup
我們甚至可以將登錄認(rèn)證等通用流程做成一個(gè)helper方法并放在我們自己的DSL模塊里:
Java代碼 復(fù)制代碼
  1. require "#{File.dirname(__FILE__)}/../test_helper"  
  2.   
  3. class StoriesTest < ActionController::IntegrationTest   
  4.   fixtures :accounts, :ledgers, :registers, :people   
  5.   
  6.   def test_multiple_users   
  7.     jim = new_session_as(:jim)   
  8.     bob = new_session_as(:bob)   
  9.     stacey = new_session_as(:stacey)   
  10.   
  11.     jim.selects_ledger(:jims)   
  12.     jim.adds_account(:name => "checking:)   
  13.     bob.goes_to_preferences   
  14.     stacey.cancels_account   
  15.   end   
  16.   
  17.   private  
  18.   
  19.   module MyTestingDSL   
  20.     attr_reader :person   
  21.   
  22.     def logs_in_as(person)   
  23.       @person = people(person)   
  24.       post authenticate_url, :user_name => @person.user_name, :password => @person.password   
  25.       is_redirected_to "ledger/list"  
  26.     end   
  27.   
  28.     def goes_to_preferences   
  29.       # ...   
  30.     end   
  31.   
  32.     def cancels_account   
  33.       # ...   
  34.     end   
  35.   
  36.     def new_session_as(person)   
  37.       new_session do |sess|   
  38.         sess.goes_to_login   
  39.         sess.logs_in_as(person)   
  40.         yield sess if block_given?   
  41.       end   
  42.     end   
  43. end  

我們會(huì)發(fā)現(xiàn)集成測(cè)試比單獨(dú)Controller的功能測(cè)試慢許多,因?yàn)榧蓽y(cè)試涉及的東西太多

安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 久草视频在线免费播放 | 欧美性xxxxx极品视频 | 亚洲欧美日韩一区高清中文字幕 | 两个人看的www高清免费视频 | 韩国免费a级在线观看观 | 日日操人人| 日本一区二区影院 | 色天天综合色天天碰 | 精品国产一区二区三区久久久狼 | 国产成人aa免费视频 | 国产麻豆剧果冻传媒观看免费视频 | 久久香蕉国产 | 69av网址 | 波多野结衣久久精品 | 青青操视频免费观看 | 免费日韩一级片 | 欧美性猛交xxx大交 欧美性猛交xxx乱大交 | 精品欧美日韩一区二区 | 国产黄色网页 | 亚洲伦理中文字幕 | 欧美日韩三 | 欧美人曽交| 国产精品2019 | 欧洲色播 | 久久精品2 | 日韩在线高清 | 99精品久久99久久久久久 | 2021国产精品久久 | 国产精品亚洲二区在线 | 久久精品伊人网 | 日韩在线高清 | 欧美人bbbwww| 久久咪咪 | 欧美在线高清 | 日韩顶级片 | 亚洲天堂网址 | 国产精华av午夜在线观看 | 精品91精品91精品国产片 | 欧美一区二区激情三区 | 国产福利在线观看永久视频 | 91成人爽a毛片一区二区 |