Rails/Grape Rspec undefined method `shopping_element_relatio



我想测试一个方法,如果shopping_process最终确定,该方法将promo_code更新为used。此外,它应该使用ShoppingProcessDocumentCreatorFetcher创建一个 pdf

这是我想要测试的方法

def finalize_shopping_process(form)
if finalize_process == true
shopping_process.campaign_code.update(state: 'used')
document_creator_class = ShoppingProcessDocumentCreatorFetcher.new(shopping_process).call
document_creator_class.new(shopping_process).call
end
Success(form)
end

和规格:

describe 'campain code' do
subject(:process_update) do
described_class.new(
shopping_process: shopping_process,
form: form,
finalize_process: true,
).call
end
it 'updates state of assigned campain code' do
updated_shopping_process = process_update.value!
expect(updated_shopping_process.campaign_code.state).to eq('used')
end
end

最后我有一个错误

NoMethodError: nil:NilClass 的未定义方法 'shopping_element_relations'

奇怪的是,如果我从测试方法中删除这些行:

document_creator_class = ShoppingProcessDocumentCreatorFetcher.new(shopping_process).call
document_creator_class.new(shopping_process).call

规格会帕斯。我不知道我错在哪里。

编辑:

以下所有错误:

ShoppingProcesses::Update.call campain code updates state of assigned campain code
Failure/Error: return false unless parent_group.shopping_element_relations.hiding.any?
NoMethodError:
undefined method `shopping_element_relations' for nil:NilClass

def finalize_shopping_process(form) if finalize_process == true shopping_process.campaign_code.update(state: 'used') document_creator_class = ShoppingProcessDocumentCreatorFetcher.new(shopping_process).call document_creator_class.new(shopping_process).call end Success(form) end

在上面的函数中document_creator_class它被初始化为调用方法,而不是预期的类。 替换行

document_creator_class = ShoppingProcessDocumentCreatorFetcher.new(shopping_process).call

document_creator_class = ShoppingProcessDocumentCreatorFetcher然后尝试。

我希望这能解决您的问题。

相关内容

最新更新