我想测试一个方法,如果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
然后尝试。
我希望这能解决您的问题。