如何测试在Sinatra或Padrino中呈现特定模板?

时间:2014-04-08 17:32:05

标签: rspec sinatra padrino

想象一下,你有两个模板:

# app/views/users/foo.haml.html
%p ...

# app/views/users/bar.haml.html
%p ...

一个渲染这些的控制器:

MyApp.controllers :users do
  get '/herp' do
    render 'users/foo'
  end
  get '/derp' do
    render 'users/bar'
  end
end

编写RSpec测试的最佳方法是什么,断言特定视图是由控制器呈现的?

理想情况下,有没有办法让测试只检查视图 是否已经渲染,而不实际呈现它?

1 个答案:

答案 0 :(得分:1)

您可以使用Rack::Test检查页面的呈现:

RSpec.configure do |config|
  config.include Rack::Test::Methods
  # other stuff too…
end


describe "Getting the user's page", :type => :request do
  let(:username) { "herp" }
  before do
    get "/users/#{username}"
  end
  subject{ last_response }
  its(:status) { should == 200 }
  its(:body) { should include "Something that was on the template" }
end

一旦工作完成,您可以将其概括为生成不同的用户名以运行规范等等。

要检查页面 是否已呈现而不呈现它,也许您可​​以将render方法加倍?