如何从Padrino控制台测试Padrino控制器

时间:2013-12-02 18:08:47

标签: ruby controller sinatra padrino

我知道在Rails中我可以做类似

的事情
app.get 'url'
app.response

但这在Padrino中不起作用,也没有任何常规controller调用,因为Padrino使用不同于Rails的控制器方法。

我要做的是从Ruby Padrino MRI控制台测试我的控制器方法。例如,我想存储对象,调用相同的方法100次,然后比较遗留的对象。我正试图找到内存泄漏。

因此能够从Padrino console调用该方法会很棒。

我在官方文档或其他地方找不到任何告诉我如何操作的内容。

1 个答案:

答案 0 :(得分:2)

Padrino :: Application中的get只是DSL的一部分,用于定义新路由,而不是检索其内容。您要实现的目标通常是Rack :: Test库的一部分。

查看Sinatra文档:

http://www.sinatrarb.com/testing.html

特别将有关Rack :: Test的部分与没有Mixin的Mixin VS进行比较。这应该让你了解获取的来源。

在你的情况下,如果你想从控制台进行测试,那么它应该是这样的部分:

require 'rack/test'
browser = Rack::Test::Session.new(Rack::MockSession.new(Padrino::Application))
browser.get '/'

现在,在您看到Padrino::Application的地方,您必须键入自己继承自该类的应用程序主类,而不是抽象类本身

请注意,结果将是一个Rack :: MockSession对象,所以如果你只是想看html那么:

browser.get('/').body