Sinatra Rspec - 测试视图已呈现

时间:2016-03-09 18:29:28

标签: testing rspec sinatra

我正在为Sinatra应用程序编写测试,该应用程序通过gem从API获取输入。一旦我得到API响应,我需要测试模板是否已正确呈现。 API的响应将是我正在加载的页面的HTML。

我的第一直觉是写一个看起来像这样的测试:

describe 'the root path'
  it 'should render the index view' do
    get '/'

    expect(last_response).to render_template(:index)
  end 
end

不幸的是,当我尝试这个时,我收到以下错误:undefined method `render_template'

我想知道是否有人遇到过这个问题 - 它似乎应该是一个简单的修复,但我似乎无法找到任何文档来帮助它。

2 个答案:

答案 0 :(得分:3)

由于时间限制,我目前根本没有测试视图,但我确实在Rack :: Test上取得了一些有限的成功。

理论上你可以说:

require 'rack/test'
include Rack::Test::Methods

def app
  Sinatra::Application
end

describe 'it should render the index view' do
  get '/'
  expect(last_response).to be_ok
  expect(last_response.body).to eq(a_bunch_of_html_somehow)
end

如果我再次走这条路,因为我的观点是haml,我可以通过调用a_bunch_of_html_somehow来实施Haml::Engine方法 - 但我不确定这是否有帮助你。

我从Sinatra网站here解除了这个批发 - 这个页面非常值得一读。

答案 1 :(得分:1)

我们最终废弃了这种方法,因为Selenium或Capybara等集成测试工具套件可以更好地处理这种方法。我没有在基本的Sinatra Rspec套件中找到可以做到这一点的等价物 - 将它移动到不同的范围更有意义