Rspec控制器中显示的#<RSpec :: Core :: ExampleGroup :: Nested_1的未定义方法`get'

1 ruby rspec get controllers

从Rspec - 控制器运行以下代码后,我从get方法中得到一个错误

it "assigns @MyItems" do
  my_item = mock(:mypay_items)
  my_item = mock( MyItem)
  MyItem.should_receive(:all).and_return(my)
  get 'index'
  assigns[:my_items].should eql(my_items)
  response.should be_success
end 
Run Code Online (Sandbox Code Playgroud)

它会导致错误:

undefined method `get' for #<RSpec::Core::ExampleGroup::Nested_1:0x34b6ae0>
Run Code Online (Sandbox Code Playgroud)

Chr*_*erg 6

这似乎是你没有正确地宣布你的规范作为控制器的规格,这会导致HTTP请求方法(get,post等)不可用.确保在规范的顶部,您有以下内容:

describe PostsController do
   ...
end
Run Code Online (Sandbox Code Playgroud)

替换PostsController为控制器的名称.如果这不起作用,请添加:type => :controller:

describe PostsController, :type => :controller do
   ...
end
Run Code Online (Sandbox Code Playgroud)

另见这个答案:未定义的方法`get'for#<RSpec :: Core :: ExampleGroup :: Nested_1:0x00000106db51f8>