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测试,并且监控文件改动,有任何文件改动就会触发一次测试,大家可以改动文件试试,从此再也不用手动运行测试命令了。

Mac用户特殊技能
对于哪些特别“懒”的程序员,在Mac下,还有一个技能非常实用, 使用Growl软件提供的Notification功能,自动检测测试结果,给出通知,程序员都不需要自己跑到命令行下去查看运行的结果,效果图如下:
Sinatra 101(3)--自动化测试
Sinatra 101(3)--自动化测试
首先,需要安装Growl软件,该软件是需要买的。
然后安装gems
gem install autotest-growl
gem install autotest-fsevent

最后,配置autotest的运行环境,在项目根目录创建文件“.autotest”,在该文件中引入之前安装的2个gem:
require 'autotest/growl'
require 'autotest/fsevent'

重启命令行,运行’autotest‘, have fun!

你可能感兴趣的:(Sinatra)