ruby-on-rails - 如何在RSpec中验证渲染模板的局部性

标签 ruby-on-rails rspec rspec-rails

我想知道如何验证传递给 Controller ​​中渲染模板的本地人

Controller :

def lelf_panel
  # ...
  if some_condition
    locals_hash = some_very_long_hash_A
  else
    locals_hash = some_very_long_hash_B
  end
  render :partial => "left_panel", :layout => false, :locals => locals_hash
end

当前规范:
it 'should render correct template for lelf_panel' do
  # ... 
  get 'left_panel'
  response.should render_template('system/_left_panel')
end   

现在,我需要为该 Controller 完成Rcov,因此我需要添加/修改规范以覆盖“some_condition”结果。而且我想验证传递给渲染的'lelf_panel'本地人,就好像我只验证render_template一样,为这两个结果渲染的部分页面是相同的。

我在下面的rspec文档中检查了'render_template'
http://rubydoc.info/gems/rspec-rails/2.8.1/RSpec/Rails/Matchers/RenderTemplate:render_template

它仅提供消息的第二个参数,因此如何测试传递给渲染的本地变量?

最佳答案

据我所知,无法以您所描述的方式直接检查本地人的模板。

您可以将locals_hash更改为@locals_hash,然后通过assigns(:locals_hash)检查结果。

或者,您可以在生成的HTML上使用选择器,并检查其中是否包含一些指示性内容-例如,如果locals_hash影响页面的标题,请检查生成的HTML页面标题是否符合您的期望。

关于ruby-on-rails - 如何在RSpec中验证渲染模板的局部性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8843867/

相关文章:

ruby-on-rails - Rails 和 RSpec : `rake spec` runs all specs twice

ruby-on-rails - 带有 rspec 的 rails json.jbuilder api -> ActionView::MissingTemplate

ruby-on-rails - rails : undefined method `*' for nil:NilClass

mysql - mysql2 和 rails3 的 RuntimeError( bundle 程序)

ruby-on-rails - 实时查看用户是否在线

ruby-on-rails - RSpec 问题模拟 HTTP 请求

ruby-on-rails - 创建新 Rails 项目时出现 OpenSSL 错误

ruby-on-rails - validate_presence_of 不会产生 'can' t be Blank' 错误

ruby-on-rails - cucumber 未定义方法

ruby-on-rails - 使用 Capybara 检查输入字段是否存在