Ruby on rails Rails-如何测试需要Gem实例的视图(f.e.wice_grid)

Ruby on rails Rails-如何测试需要Gem实例的视图(f.e.wice_grid),ruby-on-rails,rspec,rubygems,ruby-on-rails-4,rspec-rails,Ruby On Rails,Rspec,Rubygems,Ruby On Rails 4,Rspec Rails,我需要为使用wice_grid的视图文件编写一个测试。我们现在的问题是测试失败,因为视图需要一个这样的实例 1) admin/shops/index renders a list of admin/shops Failure/Error: render ActionView::Template::Error: WiceGrid: The first argument for the grid helper must be an instance of the WiceGrid cl

我需要为使用wice_grid的视图文件编写一个测试。我们现在的问题是测试失败,因为视图需要一个这样的实例

  1) admin/shops/index renders a list of admin/shops
 Failure/Error: render
 ActionView::Template::Error:
   WiceGrid: The first argument for the grid helper must be an instance of the WiceGrid class
 # ./app/views/admin/shops/index.html.erb:40:in `_app_views_admin_shops_index_html_erb___340103790847020275_34309580'
 # ./spec/views/admin/shops/index.html.erb_spec.rb:12:in `block (2 levels) in <top (required)>'
这是视图文件

require 'spec_helper'

describe "admin/shops/index" do
  before(:each) do
    assign(:admin_shops, [
      stub_model(Shop),
      stub_model(Shop)
    ])
  end

  it "renders a list of admin/shops" do
    render
    # Run the generator again with the --webrat flag if you want to use webrat matchers
  end
end
<%= grid(@grid, upper_pagination_panel: false) do |g| css_class = 

        g.column name: "Id", attribute: "id"

        g.column name: "Country", attribute: "country_id"

end -%>

在测试中需要wice网格:

编辑:在测试中还包括wice_网格控制器:

require 'spec_helper'
require 'wice_grid'

describe "admin/shops/index" do
   include Wice::Controller # this will add the initialize_grid method
   # ...
然后在测试中的
before(:each)
中,将
@grid
var分配给一个新的wice\u网格

describe "admin/shops/index" do
  include Wice::Controller

  before(:each)do
    assign(:grid, initialize_grid(Shop))
  end

  # ... your tests
初始化网格(您的模型)
的部分应与在控制器中分配
@grid
时的部分相同


编辑:我是通过阅读wice_网格源代码得出这个结论的,从这个文件开始:-在第36行,你可以看到wice是如何将自己包含到
ActionController::Base
中的。这就是控制器中可用的
initialize\u grid
方法。因此,它也适用于您的测试。

在测试中需要wice网格:

编辑:在测试中还包括wice_网格控制器:

require 'spec_helper'
require 'wice_grid'

describe "admin/shops/index" do
   include Wice::Controller # this will add the initialize_grid method
   # ...
然后在测试中的
before(:each)
中,将
@grid
var分配给一个新的wice\u网格

describe "admin/shops/index" do
  include Wice::Controller

  before(:each)do
    assign(:grid, initialize_grid(Shop))
  end

  # ... your tests
初始化网格(您的模型)
的部分应与在控制器中分配
@grid
时的部分相同


编辑:我是通过阅读wice_网格源代码得出这个结论的,从这个文件开始:-在第36行,你可以看到wice是如何将自己包含到
ActionController::Base
中的。这就是控制器中可用的
initialize\u grid
方法。因此,它也适用于您的测试。

在测试中需要wice网格:

编辑:在测试中还包括wice_网格控制器:

require 'spec_helper'
require 'wice_grid'

describe "admin/shops/index" do
   include Wice::Controller # this will add the initialize_grid method
   # ...
然后在测试中的
before(:each)
中,将
@grid
var分配给一个新的wice\u网格

describe "admin/shops/index" do
  include Wice::Controller

  before(:each)do
    assign(:grid, initialize_grid(Shop))
  end

  # ... your tests
初始化网格(您的模型)
的部分应与在控制器中分配
@grid
时的部分相同


编辑:我是通过阅读wice_网格源代码得出这个结论的,从这个文件开始:-在第36行,你可以看到wice是如何将自己包含到
ActionController::Base
中的。这就是控制器中可用的
initialize\u grid
方法。因此,它也适用于您的测试。

在测试中需要wice网格:

编辑:在测试中还包括wice_网格控制器:

require 'spec_helper'
require 'wice_grid'

describe "admin/shops/index" do
   include Wice::Controller # this will add the initialize_grid method
   # ...
然后在测试中的
before(:each)
中,将
@grid
var分配给一个新的wice\u网格

describe "admin/shops/index" do
  include Wice::Controller

  before(:each)do
    assign(:grid, initialize_grid(Shop))
  end

  # ... your tests
初始化网格(您的模型)
的部分应与在控制器中分配
@grid
时的部分相同


编辑:我是通过阅读wice_网格源代码得出这个结论的,从这个文件开始:-在第36行,你可以看到wice是如何将自己包含到
ActionController::Base
中的。这就是控制器中可用的
initialize\u grid
方法。因此,它也适用于您的测试。

谢谢您的回答。。。我现在的问题是,它说“未定义的方法‘初始化网格’”,因为它是一个受保护的方法。没问题。在实例化@grid的控制器中有什么?它的def index@grid=initialize\u grid(Shop)endI编辑了我的答案,以包含未定义initialize\u grid错误的解决方案。感谢您的回答。。。我现在的问题是,它说“未定义的方法‘初始化网格’”,因为它是一个受保护的方法。没问题。在实例化@grid的控制器中有什么?它的def index@grid=initialize\u grid(Shop)endI编辑了我的答案,以包含未定义initialize\u grid错误的解决方案。感谢您的回答。。。我现在的问题是,它说“未定义的方法‘初始化网格’”,因为它是一个受保护的方法。没问题。在实例化@grid的控制器中有什么?它的def index@grid=initialize\u grid(Shop)endI编辑了我的答案,以包含未定义initialize\u grid错误的解决方案。感谢您的回答。。。我现在的问题是,它说“未定义的方法‘初始化网格’”,因为它是一个受保护的方法。没问题。在实例化@grid的控制器中有什么?它的def index@grid=initialize\u grid(Shop)endI编辑了我的答案,以包含未定义的initialize\u grid错误的解决方案。