我创建了一个创建新交互的服务对象。创建交互时,这将启动逻辑以生成潜在客户。根据interaction_type生成潜在客户。
见下面的代码:
class InteractionCreation
def initialize params = {}
@interaction = Interaction.new(params)
end
def call
if interaction.save
generate_lead
end
return interaction
end
private
def interaction
@interaction
end
def generate_lead
LeadGeneration.new(interaction).call
end
end
我尝试了一些事情,但我不确定我应该测试多少。可以很容易地测试是否生成了交互,但是我应该对LeadGeneration创建的潜在客户做任何事情。我试图最小化公共接口的大小,现在只测试它。有什么想法吗?
答案 0 :(得分:1)
我至少要这样做:
describe InteractionCreation do
let(:interaction) { double :interaction }
let(:params) { double :params }
let(:action) { described_class.new(params).call }
let(:lead) { double(:lead) }
before do
Interaction.should_receive(:new).with(params).and_return interaction
LeadGeneration.stub(:new).and_return(lead)
end
it 'doesnt call Lead Generation when save ko' do
interaction.stub(:save).and_return false
lead.should_not_receive :call
action
end
it 'calls Lead Generation when save ok' do
interaction.stub(:save).and_return true
lead.should_receive :call
action
end
end
也许应该检查返回值,在这种情况下,添加另一个规范:)
答案 1 :(得分:0)
您可以查看公共方法,例如'初始化'并且打电话给'使用rspec。检查initialize方法是否正确分配属性。对于“互动”#39;方法,您可以检查" generate_lead'如果保存了交互,则调用。