如何使用RSpec在Sinatra App上设置顶级方法的期望?

时间:2016-05-05 22:04:46

标签: ruby rspec mocking sinatra

Spec helper:

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

这些都不起作用。

String sql = "insert into some_table (some_column, timestamp_column) values (?, current_timestamp)"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setInt(1, 42); stmt.executeUpdate(); 是主要的,所以我想我们需要在main上模拟一个方法。但是没有找到怎么做。

1 个答案:

答案 0 :(得分:0)

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

阅读此博文后:http://www.philandstuff.com/2012/02/12/surprises-while-testing-sinatra-controllers.html

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

来自' sinatra / base.rb'

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

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