我想测试在运行某行代码时是否在类上调用:new
。我有以下内容:
class TravelCard
def check_in(station)
self.in_journey = true
self.current_journey = Journey.new(station)
end
end
使用double,我想测试Journey
类在运行:new
时收到card.check_in
消息,但我无法获得类双精度来执行此操作。如果我在RSpec中尝试以下内容
describe TravelCard do
describe '#check_in' do
it 'creates a new journey' do
journey = class_double("Journey")
station = double(:station)
expect(journey).to receive(:new).with(:station)
card.check_in(station)
end
end
end
我得到了
Failure/Error: expect(journey).to receive(:initialize).with(:station)
(ClassDouble(Journey) (anonymous)).initialize(:station)
expected: 1 time with arguments: (:station)
received: 0 times
有人可以解释这个对anonymous
的引用是什么,更重要的是,如何使用RSpec成功测试是否在类double上调用:new
?
我看过this question,但是问题解决了问题,而没有测试是否在课堂上调用了:new
。
答案 0 :(得分:2)
您应该传递station
个实例而不是符号。
因此,请尝试删除":#34;
expect(journey).to receive(:new).with(station)
另外,在.as_stubbed_const
来电后添加class_double
。
journey = class_double("Journey").as_stubbed_const