如何在RSpec / Capybara视图规范中查看渲染页面?

时间:2018-02-12 16:55:20

标签: rspec capybara rspec-rails

我知道在使用Capybara的正常功能规范中,我可以这样做:

require "rails_helper"

describe "users/show", type: :feature do
  it 'renders a page' do
    visit user_path
    save_and_open_page
  end
end

是否有相同的方法在视图规范中查看呈现的页面,而不将其标记为功能?就是这样的:

require "rails_helper"

describe "users/show", type: :view do
  it 'renders a page' do
    render
    save_and_open_page
  end
end

当我尝试这个时,我得到了NameError: undefined local variable or method 'save_and_open_page'

(我知道我可以将字符串视为已渲染,并且this method有人建议在功能规范的类似线程中工作 - 如果需要,我可以编写自己的方法来执行此操作。但似乎很可能它有一些现有的功能吗?)

1 个答案:

答案 0 :(得分:1)

不,在浏览器中打开“页面”的视图测试中没有现有功能。默认情况下,只有Capybaras匹配器包含在视图规范中,而不是其会话方法。这是因为视图规范没有“浏览器”,只是你的视图模板被渲染并作为字符串返回(没有加载CSS / JS,没有cookie,没有真正的会话,没有交互等)。正如您所指出的那样,如果您确实需要该功能,将rendered字符串保存到文件并加载到浏览器中就足够了。

相关问题