`

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功能,自动检测测试结果,给出通知,程序员都不需要自己跑到命令行下去查看运行的结果,效果图如下:


首先,需要安装Growl软件,该软件是需要买的。
然后安装gems
gem install autotest-growl
gem install autotest-fsevent

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

重启命令行,运行’autotest‘, have fun!
  • 大小: 66.4 KB
  • 大小: 62.4 KB
0
1
分享到:
评论

相关推荐

    sinatra-boilerplate-modular:sinatra-样板模块

    4. **Rakefile**: 提供了 Rake 任务,用于自动化构建、测试和部署过程。 5. **spec** 目录(可能在其他项目中):存放测试代码,通常使用 RSpec 或 MiniTest 进行测试驱动开发。 **Sinatra 模块化的优点** 1. **...

    Ruby-Padrino一个构建在Sinatra上的全堆栈ruby框架

    6. **测试框架集成**:Padrino与RSpec、Test::Unit等测试框架紧密集成,简化了测试代码的编写和执行。 7. **插件系统**:Padrino拥有丰富的插件生态系统,可以扩展框架的功能,如国际化(i18n)支持、缓存管理、邮件...

    vulnreport:Salesforce产品安全性的开源渗透测试管理和自动化平台

    渗透测试管理和自动化平台 Vulnreport是一个平台,用于管理渗透测试并生成格式合理,可操作的调查结果报告,而不会占用安全工程师的正常开销。 该平台旨在在流程的每个阶段支持自动化,并允许您针对渗透测试过程中...

    ruby测试代码6

    在测试代码中,Ruby经常用于编写自动化测试框架,如RSpec和Cucumber。 2. **数据文件**: - `Floor.dat`, `Game.dat`, `Sk.dat`:这些可能是游戏中的数据文件,存储了地板、游戏状态或某种特殊对象(可能对应“Sk...

    heroku-sinatra:一个准系统的Sinatra应用程序,可以使用heroku-docker轻松地部署到Heroku

    保护文件系统感知的自动化(在这种情况下,运行测试) 使用Docker Heroku的是获得两全其美的绝佳方法:使用Docker轻松进行本地开发,并在Heroku上(几乎)实现无与伦比的生产。 您只需要启动。 确保已安装插件: ...

    ddist_assignment_tester:分布式系统任务测试员

    分布式系统课程作业的自动化测试该项目测试了奥胡斯大学分布式系统课程(2015 年Spring)的上交。 该项目的主要目标是帮助我(课程中的助教)评估上交。测试仪概述要大致了解测试仪的工作原理和使用方法,。安装安装...

    自动化项目

    在自动化项目中,我们通常会利用Ruby的库,如Cucumber用于行为驱动开发(BDD),Selenium用于网页自动化测试,或者Rake作为构建自动化工具。Cucumber允许非技术人员通过简单的Gherkin语法来定义系统行为,使得业务...

    x_sinatra_project

    3. ActiveRecord:ORM(对象关系映射)库,作为数据持久化层,连接应用程序和数据库,简化了数据库操作。 4. 数据库:虽然未明确指出,但此类应用通常会使用如SQLite或PostgreSQL这样的关系数据库来存储艺术品和...

    favorites_sinatra_final_project

    运行测试解释如何运行此系统的自动化测试 分解为端到端测试解释这些测试要测试的内容以及原因 举个例子编码风格测试解释这些测试测试什么以及为什么 给出示例部署添加有关如何在实时系统上部署此方法的其他说明 使用...

    适用于iOSSDK的自定义AlertView。_Objective-C_Ruby_下载.zip

    2. 持续集成:通过Jenkins、Travis CI等工具配合Ruby,可以实现自动化测试和构建流程,提高开发效率。 3. 测试工具:例如Ruby的Cucumber库可以用于行为驱动开发(BDD),编写可读性强的测试用例。 4. 脚本工具:Ruby...

    howitzer_stat:用于 Web 应用程序页面的自动化测试覆盖率可视化的榴弹炮扩展

    榴弹炮统计 扩展用于自动测试 Web 应用程序页面的覆盖可视化。 此扩展由 2 个组件组成: 基于 Sinatra 的 REST 网络服务用于注入可测试 Web 应用程序的客户端文件(js、css、html 标记)要求Ruby 1.9.3+演示 真正的...

    howmany-frontend:我的每日指标 Web 应用程序! 建立在 Sinatra 和 EmberJS 之上(前)

    `npm install -g phantomjs` 是安装PhantomJS,一个无头浏览器,常用于自动化测试和页面渲染。在这个项目中,可能用于Ember的测试环境,比如运行ember-cli提供的测试套件。 在压缩包文件名称列表中,我们看到...

    Ruby动态编程对象编程Ruby动态编程对象编程Ruby动态编程对象编程

    - 如Ruby on Rails、Sinatra、RSpec等,极大地提升了Web开发、自动化测试等方面的效率。 #### 二、Ruby的应用领域 **1. Web开发** - **Ruby on Rails** - 作为最著名的Ruby框架之一,Rails简化了Web应用程序的...

    sinatra_api_book

    Sinatra支持Rack测试,可以方便地编写单元测试和集成测试。此外,还可以使用Postman、curl或其它HTTP客户端工具进行手动测试。 10. **JSON数据格式** RESTful API通常使用JSON作为数据交换格式。Ruby的内置JSON库...

    georgia-job-alert:一个利用Sinatra中的RESTful API的AngularJS应用程序,允许用户接收有关乔治亚州工作的电子邮件警报

    这个应用利用了RESTful API设计原则,使得前端(AngularJS)与后端(Sinatra)之间的交互更加高效和标准化。 1. **AngularJS**: - AngularJS是Google维护的一个JavaScript框架,用于构建单页应用程序(SPA)。它...

    Ansible-ansible-role-passenger.zip

    Ansible 是一个开源的自动化工具,专为系统管理员和开发者设计,用于简化配置管理、应用程序部署和任务自动化。它的设计理念是“简单易用”,通过基于YAML的 playbook 实现复杂操作的剧本化,使得运维工作变得标准化...

    ROR_shopping_microservice:用Sinatra制成

    7. **测试**: 微服务通常需要完善的自动化测试,包括单元测试、集成测试和端到端测试。Ruby提供了Minitest、RSpec等测试框架,可以编写针对Sinatra应用的测试代码,确保服务的功能性和稳定性。 8. **部署**: 项目...

    Ruby编程语言详解(内容丰富)

    - **示例**: 自动化测试脚本、系统管理和日常任务自动化。 - **优点**: 简单易学,易于维护。 **3. 数据分析与挖掘** - **特点**: Ruby提供了如NArray和SciRuby等库,用于数据处理和分析。 - **示例**: 大数据...

    ruby开发的基本流程.doc

    - **自动化部署工具**:Capistrano是一款常用的自动化部署工具,它可以简化部署流程,确保每次部署的一致性和可靠性。 - **容器化技术**:使用Docker等容器化技术可以提供一致的运行环境,便于跨平台部署。 - **监控...

Global site tag (gtag.js) - Google Analytics