我有这样的方法
class SomeClass
def self.test_method
while(true)
make_heavy_lifting
sleep(60*60)
end
end
end
我如何为此方法编写测试。
我想到的一种解决方案是存根 sleep 方法,它有效,但我无法存根 while 关键字。请建议对具有无限循环的方法进行单元测试的最佳实践。
我有这样的方法
class SomeClass
def self.test_method
while(true)
make_heavy_lifting
sleep(60*60)
end
end
end
我如何为此方法编写测试。
我想到的一种解决方案是存根 sleep 方法,它有效,但我无法存根 while 关键字。请建议对具有无限循环的方法进行单元测试的最佳实践。
也许您可以将除了 sleep 之外的所有内容移到另一个方法中,然后只为该方法编写规范,我认为您真的不需要测试您的方法是否具有 while 循环和睡眠(您不需要测试每一行代码:P) 但是如果你想检查这个问题,它有一些你可以尝试的东西 测试“无限循环”时的最佳实践是什么?
为了测试这个我存根:loop
并使用它而不是while(true)
:
班级:
class SomeClass
def self.test_method
loop do
make_heavy_lifting
sleep(60*60)
end
end
end
规格:
describe SomeClass do
describe '#test_method' do
expect(SomeClass).to receive(:loop).and_yield
expect(SomeClass).to receive(:make_heavy_lifting)
expect(SomeClass).to receive(:sleep).with(60*60)
end
这样它只会迭代一次。
编辑:似乎在另一个问题中也建议了这一点