Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 如何使用嵌套路由测试控制器?_Ruby On Rails_Ruby On Rails 4_Rspec_Factory Bot - Fatal编程技术网

Ruby on rails 如何使用嵌套路由测试控制器?

Ruby on rails 如何使用嵌套路由测试控制器?,ruby-on-rails,ruby-on-rails-4,rspec,factory-bot,Ruby On Rails,Ruby On Rails 4,Rspec,Factory Bot,请帮助解决这个问题。我需要一个用于索引操作的测试渲染模板 routes.rb: resources :users do resources :albums end 耙道: user_albums GET /users/:user_id/albums(.:format) albums#index 相册控制器: class AlbumsController < ApplicationController before_action :set_album

请帮助解决这个问题。我需要一个用于索引操作的测试渲染模板

routes.rb:

resources :users do
  resources :albums
end
耙道:

user_albums GET    /users/:user_id/albums(.:format)             albums#index
相册控制器:

class AlbumsController < ApplicationController
  before_action :set_album, only: [:show, :edit, :update, :destroy, :get_album_data]

  def index
    @user = User.find(params[:user_id])
    @albums = @user.albums.paginate(page: params[:page], :per_page => 6).order(created_at: :DESC)
    @album = Album.new
  end

  .........
  .........

  private
    def set_album
      @album = Album.find(params[:id])
    end

    def album_params
      params.require(:album).permit(:title, :description)
    end   
end
工厂:

FactoryGirl.define do
  factory :user do
    name 'qqq'
    sequence(:email){ |i| "use#{i}@ad.ad" }
    password 'qwerty'
    password_confirmation{ |u| u.password } 
  end
end
我在控制台中运行它:

rake db:reset RAILS_ENV=test
rspec spec
Console显示以下错误消息:

F.

Failures:

  1) AlbumsController index action render index template if user is found
     Failure/Error: get :index, { user_id: user.id }
     NoMethodError:
       undefined method `get' for #<RSpec::ExampleGroups::AlbumsController::IndexAction:0x000000067fc668>
     # ./spec/controllers/albums_controller_spec.rb:7:in `block (3 levels) in <top (required)>'


Finished in 0.13261 seconds (files took 1.91 seconds to load)
2 examples, 1 failure

Failed examples:

rspec ./spec/controllers/albums_controller_spec.rb:5 # AlbumsController index action render index template if user is found
F。
失败:
1) 如果找到用户,则AlbumsController索引操作呈现索引模板
失败/错误:get:index,{user\u id:user.id}
命名错误:
未定义的方法“get”#
#./spec/controllers/albums\u controller\u spec.rb:7:in'block(3层)in'
完成时间为0.13261秒(文件加载时间为1.91秒)
2例,1例失败
失败的示例:
rspec./spec/controllers/albums_controller_spec.rb:5#AlbumsController索引操作如果找到用户,则渲染索引模板

请帮助我执行“索引”测试操作,以了解您当前遇到的错误

undefined method `get' for #<RSpec::ExampleGroups::AlbumsController

您的
albums\u controller\u spec.rb是否缺少
需要“rails助手”
?(
spec助手
)旧版本的RSpec rails在我的文件中。我只是没有这个问题?
undefined method `get' for #<RSpec::ExampleGroups::AlbumsController
describe AlbumsController, type: :controller do