如果我有一个构造函数调用另一个函数的类,我该如何检查它是否被调用并调用了正确的次数?如何检查对rspec中构造函数调用的方法的调用?
class MyClass
def initialize(count)
count.times{self.do_something}
end
def do_something
# whatever
end
end
我想这样说
n = 4
MyClass.new(n).should_receive(:do_something).exactly(n).times
n = 2
MyClass.new(n).should_receive(:do_something).exactly(n).times
但因为调用do_something发生之前should_receive被连接到它(至少我认为这就是为什么)失败。
expected: 4 times with any arguments
received: 0 times with any arguments
或者是从构造函数调用像这样的东西是错误的,我应该重构?
而且,这个问题很类似这样的:
rspec: How to stub an instance method called by constructor?
但我希望在过去5年中,答案已经变得比建立一个存根new
通话的手动实现更好的。
,但我不希望它在任何实例。我想在这个特定的实例上。我可能不知道我会有多少个实例,每个实例应该能够接到1个呼叫,有些可能会得到另一个实例(对不起,这不在我的例子中) - 更新的例子。我知道这是人为的,但我试图不发表大量的代码。 – xaxxon
我明白你的意思了,我会更新我的答案。 –
你的'do_something'方法是否复杂?在我看来,你应该在初始化之后测试对象的状态,而不是期望在初始化时应该调用一个方法。 –