[英]NameError: uninitialized constant CreatesPointOfInterest Rspec
[英]NameError: uninitialized constant on RSpec
我的UserTrainingController中有以下內容
def create
@user_training_resource = UserTrainingResource::Create.call(user_training_resource_params)
respond_with(@user_training_resource)
end
然后在“操作”>“培訓資源”>“創建”中
class UserTrainingResource
class Create < Operation
def call(params)
user_training_resource = UserTrainingResource.new(params)
ResourceMailer.requested(user_training_resource).deliver_later if user_training_resource.save
user_training_resource
end
end
end
然后在我的測試中
require 'rails_helper'
RSpec.describe UserTrainingResource::Create do
let(:params) { attributes_for(:user_training_resource) }
describe '#call' do
it 'saves the request as pending' do
ut = UserTrainingResource::Create.call(params)
expect(ut.persisted?).to eq(true)
end
it 'queues a mailer' do
expect(ResourceMailer).to send_mail(:requested)
UserTrainingResource::Create.call(params)
end
end
end
測試給了我
NameError:未初始化的常量UserTrainingResource :: Create
我不知道問題是什么。 它不能正確執行我的操作嗎?
Rails希望在app/models/user_training_resource/create.rb
定義app/models/user_training_resource/create.rb
,或者可以將目錄添加到config.autoload_paths
。
https://blog.bigbinary.com/2015/11/05/how-constant-lookup-happens-in-rails.html
文件結構必須與類的名稱匹配。 將目錄重命名為app/models/user_training_resource/create.rb
或lib/user_training_resource/create.rb
您應該這樣使用module
:
module UserTrainingResource
class Create < Operation
...
end
end
還是這樣的簡寫方式:
class UserTrainingResource::Create < Operation
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.