Rails測試《十》不能錯過的雜七雜八
今天來介紹一些雜七雜八的測試知識,但是它們是不能錯過的。
首先來介紹一下常用的測試命令
rake test
執行包括單元測試、功能測試和整合測試在內的所有測試。
rake test:units
執行所有的單元測試。
rake test:functionals
執行所有的功能測試
rake test:integration
執行所有的整合測試。
rake test:recent
執行最近修改過的測試。
rake test:uncommited
執行所有未提交的測試。支援svn和git。
setup和teardown
在一個包含多個測試方法的測試類中,我們可能會包含一些在每個測試執行之前和之後都需要做的工作,都需要執行的一些程式碼。
比如說建立物件,清理物件之類的。集中在一起便於維護,便於修改,便於閱讀。
這樣的事情我們可以交給setup和teardown來做。setup就是中的程式碼在每個測試方法執行之前執行,teardown中的程式碼會在每個測試方法執行之後執行。
這裡我們拿之前做過的一個針對Admin::TagsController的功能測試舉例,引入setup和teardown。新增tag是需要登入的,會用到使用者資訊,需要session中有值,這部分在Admin::TagsController的所有action中都是需要的,而且使用相同就可以了,把這部分放在setup和teardown正合適。
- require 'test_helper'
- class Admin::TagsControllerTest < ActionController::TestCase
- include FactoryGirl::Syntax::Methods
- def setup
- @user_valid = create(:user_valid)
- @request.session[:user_id] = @user_valid.id
- end
- def teardown
- @user_valid = nil
- end
- def test_should_create_tag_successfully
- tag = build(:tag_valid)
- assert_difference "Tag.count" do
- post :create, {:tag => { :title => tag.title}}
- end
- end
- def test_should_create_tag_fail
- assert_no_difference "Tag.count" do
- post :create, {:tag => { :title => ""}}
- end
- end
- end
而且rails還把setup和teardown實現為callback,這樣你就可以通過下面的方式來指定setup和teardown。
- a block
- a method
- a method name as a symbol
- a lambda
- setup :init
- teardown do
- @user_valid = nil
- end
- private
- def init
- @user_valid = create(:user_valid)
- @request.session[:user_id] = @user_valid.id
- end
測試routes
- assert_routing(
- "signout",
- {:controller =>"sessions", :action =>"destroy", :method => :delete}
- )
- def test_route_posts_id
- category = FactoryGirl.create(:category_valid)
- article = FactoryGirl.create(:post_valid)
- assert_routing("posts/#{article.id}", {:controller => "posts", :action => "show", :id => article.id.to_s })
- end
本文轉自 virusswb 51CTO部落格,原文連結:http://blog.51cto.com/virusswb/1079484,如需轉載請自行聯絡原作者
相關文章
- Android動畫雜七雜八Android動畫
- 雜亂的小測試
- 架構雜談《八》架構
- 架構雜談《七》架構
- Tessy—支援複雜場景測試的單元整合測試工具
- 測試雜談——一條SQL引發的思考SQL
- 用 JMeter 做複雜介面測試遇到的問題JMeter
- 反除錯:雜項除錯
- C++八股大雜燴C++
- 《閒扯Redis八》Redis字典的雜湊表執行Rehash過程分析Redis
- Oracle 11g 雜湊、LIST分割槽測試Oracle
- 雜雜雜,彙編,shellcode,
- 用Jmeter編寫一個較複雜的測試指令碼JMeter指令碼
- UI設計師:你不能錯過的七大神器!UI
- 關於dwr的測試時,bean複雜資料的輸入Bean
- 《第七史詩》體驗分析雜談
- js 雜湊雜湊值的模組JS
- 【IT雜談】十年程式設計師程式設計師
- 錯誤 5173:不能使檔案與不同的資料庫相關,測試過,能行。資料庫
- 【雜談】做一個不被開發鄙視的測試工程師工程師
- 《51測試天地》第26期電子雜誌釋出啦
- 程式碼安全測試第四期:可逆的單向雜湊漏洞
- 一個軟體測試工程師雜亂無章的三四年工程師
- es的複雜查詢測試,使用jest的dsl工具寫查詢語句
- 《直播疑難雜症排查》之十:直播功耗高
- 雜湊表(雜湊表)詳解
- 安全的雜湊
- 網際網路測試經驗和管理雜談 (如何培養人)
- aix 雜AI
- 雜項
- 雜湊
- 複雜度分析的套路及常見的複雜度複雜度
- 由MySQL中的falcon儲存引擎引申的八卦雜談MySql儲存引擎
- 通過錯誤的sql來測試推理sql的解析過程SQL
- 樓道雜物堆置監測系統
- 雜湊表(雜湊表)原理詳解
- 【尋跡#3】 雜湊與雜湊表
- React,Redux,React-redux的錯綜複雜關係ReactRedux