Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rspec:如何使用局部变量和参数测试部分渲染?_Ruby On Rails_Testing_Rspec_Bdd_Rspec Rails - Fatal编程技术网

Ruby on rails Rspec:如何使用局部变量和参数测试部分渲染?

Ruby on rails Rspec:如何使用局部变量和参数测试部分渲染?,ruby-on-rails,testing,rspec,bdd,rspec-rails,Ruby On Rails,Testing,Rspec,Bdd,Rspec Rails,我正在尝试使用Rspec测试控制器的这一部分: def popup_company if params[:partial].present? render partial: "popup_company/pages", locals: { tab_filter: params[:tab_filter] } end end 以下是我的控制器规范,用于测试上述部件: controller.should_receive(:render).with({ :partial => '

我正在尝试使用Rspec测试控制器的这一部分:

def popup_company
  if params[:partial].present?
    render partial: "popup_company/pages", locals: { tab_filter: params[:tab_filter] }
  end
end
以下是我的控制器规范,用于测试上述部件:

controller.should_receive(:render).with({
:partial => 'popup_company/pages',
:locals => {tab_filter: params[:tab_filter]}
})
但是,我遇到了以下错误:

undefined local variable or method `params'

伙计们,你们能告诉我,我应该改变什么来克服这个错误吗。我感谢你的帮助

您的
参数
位于规范侧代码上;它只是试图成为一个局部变量。输入您希望
params[:tab\u filter]
包含的任何内容


而且,一般来说,您不应该编写仅仅重复代码所述内容的测试(我指的是“示例”)。你不在乎你的控制器调用一个部分;您关心的是控制器用包含某某值的HTML进行响应。

so参数[:tab_filter]在您的请求中,因此它可能在您的get中。也就是说,您有类似于:

get :popup_company, tab_filter: 'XXXXX', partial: 'YYYYY'
在您的规范中。您应该为tab_filter参数创建一个变量随机值,并使用该值验证传递给渲染的适当值。差不多

tab_filter = SecureRandom.hex(10)
get :popup_company, tab_filter: tab_filter, partial: 'YYYYY'
controller.should_receive(:render).with({
  partial: 'popup_company/pages',
  locals: { tab_filter: tab_filter } })
或者,您可以使用
render_模板(“popup_company/pages”)
spec确认模板正在呈现,并根据呈现视图的内容测试选项卡过滤器