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}#