我可以从路由助手方法中推断出模板吗?

时间:2019-03-24 19:40:37

标签: ruby-on-rails rspec

例如,当使用new_user_path时,是否可以仅从此帮助程序推断出渲染的模板名称?

我正在使用rspec的shared examples,并通过仅将路由帮助程序传递到共享示例中来寻找一种断言所呈现的模板是正确模板(而不是重定向)的方法。

即如果我只通过???path应该是什么?

shared_examples 'my spec' do
  it 'will not redirect' do
    get path

    expect(response).to render_template(???)
  end
end

Rspec.describe 'MySpec' do
  it_behaves_like 'my spec' do
    let(:path) { new_user_path }
  end
end

1 个答案:

答案 0 :(得分:0)

鉴于这是一个控制器共享的示例,可以使用以下代码:

shared_examples 'my spec' do
  it 'will not redirect' do
    get path

    expect(response).to render_template(request.params['action'])
  end
end

Rspec.describe 'MySpec' do
  it_behaves_like 'my spec' do
    let(:path) { new_user_path }
  end
end

在用户控制器的上下文中,测试将是:

  it 'will not redirect' do
    get new_user_path # => get '/users/new'

    expect(response).to render_template('new')
  end

RSpec的render_template matcher仅需要执行操作。