Sinatra 101(3)--自動化測試

首先,安裝rspec,非常簡單
gem install rspec

rspec只是提供了各種基礎的測試功能,要測試Sinatra的網絡功能,還需要安裝rack,和rack-test, 這兩個gem的Rack::Test::Methods模塊提供了很多模擬應用請求的功能, 還提供了很多assertions用以驗證repsonse。
gem install rack
gem install rack-test

接下來,寫第一個測試,本文中將測試在Sinatra 101(2)中創建的Note系統,創建測試文件’main_spec.rb’
require File.dirname(__FILE__)+'/main.rb'
require 'rack/test'
set :environment, :test
def app
Sinatra::Application
end
describe 'Note System' do
include Rack::Test::Methods
it 'should can access home page' do
get '/'
last_response.should be_ok
end
end

測試代碼主要注意一下幾點:
* require ‘rack/test’,加載一些基礎的測試API。
* set :environment, :test使用測試環境。
* def app方法指明測試的目標是一個Sinatra框架的應用。
* include Rack::Test::Methods 雜糅進一些輔助測試的方法,這些方法可以讓測試代碼可讀性更高。

本文主要不是介紹Rspec和Rack Test Methods,有興趣的同學請自行腦補。

運行測試:’rspec main_spec.rb‘, 結果如下:
Finished in 0.05535 seconds
1 example, 0 failures

現在,代碼已經被測試了,但是我不想每次改動代碼,都要重新運行一次rspec命令,作爲程序員,這是浪費生命,我們要儘量automate一切。

首先安裝gem ‘ZenTest’,
gem install ZenTest

然後,在項目目錄下,創建Rspec配置文件.rspec
--format nested
--color
該配置文件告訴Rspec使用nested風格的輸出,另外,使用顏色標註通過和失敗的測試。

再接着,需要把所有的rspec測試移動到spec目錄下,這是autotest的約定用法,移動之後,運行命令 ‘autotest’,系統運行所有的rspec測試,並且監控文件改動,有任何文件改動就會觸發一次測試,大家可以改動文件試試,從此再也不用手動運行測試命令了。

[b]Mac用戶特殊技能[/b]
對於哪些特別“懶”的程序員,在Mac下,還有一個技能非常實用, 使用Growl軟件提供的Notification功能,自動檢測測試結果,給出通知,程序員都不需要自己跑到命令行下去查看運行的結果,效果圖如下:
[img]http://dl.iteye.com/upload/attachment/0083/6234/8bdfc262-1bb3-3768-9724-7b65faca3dca.png[/img]
[img]http://dl.iteye.com/upload/attachment/0083/6236/72ed714e-bc80-3547-9ff4-951099ec6dea.png[/img]
首先,需要安裝Growl軟件,該軟件是需要買的。
然後安裝gems
gem install autotest-growl
gem install autotest-fsevent

最後,配置autotest的運行環境,在項目根目錄創建文件“.autotest”,在該文件中引入之前安裝的2個gem:
require 'autotest/growl'
require 'autotest/fsevent'

重啓命令行,運行’autotest‘, have fun!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章