【问题标题】:RSpec view specs - Check that layout yieldsRSpec 视图规范 - 检查布局是否产生
【发布时间】:2016-07-14 09:10:17
【问题描述】:

我想检查我的布局是否产生(没有参数或特定内容):

<%= yield %>
<%= yield :something %>

我的视图规范中有这样的内容:

let(:page) { Capybara::Node::Simple.new(rendered) }

before do
  # I want to stub the 'yield' stuff here

  render
end

it { should have_css 'my yielded stuff' }

但我找不到存根执行的方法。

我更愿意避免使用具有给定布局的示例视图来模拟渲染。

【问题讨论】:

  • 你为什么不做 feature 测试?这很简单、优雅且值得。
  • 您可以通过view.instance_variable_get("@view_flow").set(:something, "Hello World") 为“命名”收益设置内容,但我不喜欢深入研究 Rails 渲染工作原理的内部结构。如果您的布局缺少主要产量,您的大多数功能测试都应该捕获。

标签: ruby-on-rails ruby rspec rspec-rails


【解决方案1】:

我正在使用此视图规范来测试我的布局是否产生:

describe 'layouts/application.html.slim' do
  it 'yields a subview' do
    render text: 'a subview', layout: 'layouts/application'
    expect(rendered).to have_text('a subview')
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    相关资源
    最近更新 更多