ruby - 如何使用 RSpec 在 gem 中测试 Sinatra 应用程序?

标签 ruby rspec rubygems sinatra

我正在编写一个 gem,其中包含开发人员可以扩展的 Sinatra 应用程序。例如:

# gem code:
require 'sinatra'
module Mygem
  class Application < Sinatra::Base
    get 'auth/login' {}
    get 'auth/logout {}
  end
end

# developer code:
require 'mygem'
class DeveloperApp < Mygem::Application
  # ..
end

我也开始使用 RSpec。我应该如何配置 RSpec 来测试此功能?

最佳答案

上面的引用资料都是有用的,但主要是特定于 rails 的。我发现很难找到一个简单的方法来对模块化 Sinatra 应用程序进行基本测试,所以我希望这能为其他人解答这个问题。这是一个完全简单的、尽可能小的测试。这可能不是唯一的方法,但它适用于模块化应用程序:

require 'sinatra'
class Foo < Sinatra::Base
   get '/' do
    "Hello"
  end
end

require 'rack/test'

describe Foo do

  include Rack::Test::Methods

  def app
    Foo.new
  end

  it "should be testable" do
    get '/'
    last_response.should be_ok
  end

end

请注意,启动测试时不需要让服务器运行(我看到的一些教程暗示你这样做)——这不是集成测试。

关于ruby - 如何使用 RSpec 在 gem 中测试 Sinatra 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11217700/

相关文章:

ruby - 如何在 ubuntu 14.04 32 位中将 ruby​​ 从 1.9.3 更新到 2.3.1?

ruby-on-rails - Rails,按相关模型计数排序

ruby-on-rails - 机架测试需要机架应用程序,但没有给出

ruby-on-rails - Ruby on Rails - 如何对用户上传的 Ruby 文件运行自动化测试?

ruby - 确定 ice_cube 计划

ruby-on-rails - 了解 Ruby 语法

ruby - 安装 debug_inspector 0.0.2 native 扩展时出错?

ruby-on-rails - Rails 如何修复格式错误的请求(错误代码 400)?

ruby - Debian 打包系统和 RVM 能很好地协同工作吗?

ruby-on-rails - 在 pg_search 查询后列出可搜索值