Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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在rails中测试ApplicationController的操作前_Ruby On Rails_Ruby_Rspec_Factory Bot_Rspec Rails - Fatal编程技术网

Ruby on rails 如何使用RSpec在rails中测试ApplicationController的操作前

Ruby on rails 如何使用RSpec在rails中测试ApplicationController的操作前,ruby-on-rails,ruby,rspec,factory-bot,rspec-rails,Ruby On Rails,Ruby,Rspec,Factory Bot,Rspec Rails,我的应用程序控制器看起来像这样 class ApplicationController

我的应用程序控制器看起来像这样

class ApplicationController
我的一个控制器规格如下所示

require'rails\u helper'
RSpec.description选项控制器,类型::控制器do
描述“选项控制器请求规格”do
登录用户
上下文“获取#索引”do
它“应该成功并呈现到索引页”吗
联系人=创建(:选项)
get:index,参数:{company_id:1}
赋值(:选项)。应等于([选项])
终止
终止
上下文“获取#显示”do
允许(:option){create:option}
它“应该成功并呈现以编辑页面”吗
get:show,参数:{id:option.id,company_id:1}
预期(响应)。要呈现\u模板:编辑
终止
终止
终止
终止
现在的问题是,当我运行此规范时,会出现以下错误:

失败/错误:@company\u super=company.find(@company\u id\u super)
ActiveRecord::RecordNotFound:
找不到“id”=1的公司
#./app/controllers/application\u controller.rb:36:在“初始化”字段中

现在我知道问题出在应用程序控制器上,但我不知道如何解决它。我刚开始学习考试,有人能帮我吗?谢谢

在发送请求之前,使用
FactoryBot
创建
公司
记录

在spec/factories/companys.rb中:

FactoryBot.define do
  factory :company do
    name 'My Company'
    .
    .
  end
end
在您的等级库/控制器/选项中\u spec.rb

RSpec.describe OptionsController, type: :controller do

  let(:my_company) { FactoryBot.create(:company) } 

  describe 'Options controller request specs' do
    login_user
      context 'GET #index' do 
        it 'should success and render to index page' do
           contact = create(:option)
           get :index, params: { company_id: my_company.id } #<--- This will create the company record and pass its ID
           assigns(:options).should eq([option])
        end
      end      
    end
  end
end
RSpec.description选项控制器,类型::控制器do
让(:my_company){FactoryBot.create(:company)}
描述“选项控制器请求规格”do
登录用户
上下文“获取#索引”do
它“应该成功并呈现到索引页”吗
联系人=创建(:选项)
get:index,参数:{company\u id:my\u company.id}#