【问题标题】:How to use RSpec to set up expectations for top level methods on a Sinatra App?如何使用 RSpec 为 Sinatra 应用程序上的顶级方法设置期望?
【发布时间】:2016-08-31 20:35:53
【问题描述】:

规范助手:

def app
  Sinatra::Application
end

应用:

require 'sinatra'

get '/' do
  track_request
  "Welcome"
end

def track_request
  puts self.inspect
  ....
end

如何模拟track_request

allow(app).to receive :track_request
allow_any_instance_of(Sinatra::Application).to receive :track_request
allow(Sinatra::Application).to receive :track_request

这些都不起作用。

self 是 main,所以我想我们需要在 main 上模拟一个方法。但是不知道怎么做。

【问题讨论】:

标签: ruby rspec mocking sinatra


【解决方案1】:

也许不可能? (到目前为止,我很难过)

看完这篇博文:http://www.philandstuff.com/2012/02/12/surprises-while-testing-sinatra-controllers.html

看起来 Sinatra 在处理 HTTP 请求之前复制了您的控制器。

来自'sinatra/base.rb'

# Rack call interface.
def call(env)
   dup.call!(env)
end

在测试 Sinatra 应用程序时,这似乎是一种常见的做法。我很惊讶没有明确的解决方案。

【讨论】:

  • 一切皆有可能。
猜你喜欢
  • 2011-08-25
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
相关资源
最近更新 更多