想象一下,你有两个模板:
# 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测试的最佳方法是什么,断言特定视图是由控制器呈现的?
理想情况下,有没有办法让测试只检查视图 是否已经渲染,而不实际呈现它?
答案 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
方法加倍?