我有一个地址方法,它实例化一个新类并返回一些信息。
class Office
attribute :id
def address
info = Services::Employee.new
info.contact = [contact]
info.id = id
info
end
end
现在在上面的地址方法中,contact(一个数组内部)是另一个返回一堆东西的方法。
现在在我的rspec测试中我只想说info.contact返回[contact]而不用数据实际测试它。 我读到了关于should_receive但我不确定如何使用should_receive测试上述方法。
以下是我的尝试:
info = Employee.deserialize(JSON.parse(info.to_json))
it 'returns info' do
Employee.should_receive(:info.contact).and_return('[contact]')
expect(helper.address).to eq(info)
end
我收到了这个错误:
expected: 1 time with any arguments
received: 0 times with any arguments
答案 0 :(得分:0)
看来info
是测试中Employee
的一个实例。因此,Employee
收到消息contact
。
尝试更改测试,以便should_receive
直接放在Employee
上:
Employee.any_instance.should_receive(:contact).and_return('[contact]')
答案 1 :(得分:0)
Services::Employee,.any_instance.should_receive(:contact=) {|value|
value.should eq <expected_value>
<expected_value>
}