【发布时间】:2016-07-10 11:09:34
【问题描述】:
我正在尝试在循环中测试代码,我该怎么做:
class MyClass
def initialize(topics, env, config, limit)
@client = Twitter::Streaming::Client.new(config)
@topics = topics
@env = env
@limit = limit
end
def start
@client.filter(track: @topics.join(",")) do |object|
# how would I test the code inside here, basically logical stuff
next if !object.is_a?(Twitter::Tweet)
txt = get_txt(object.text)
end
end
有没有办法做到这一点?
【问题讨论】:
-
我认为您不测试块内的代码。相反,您将测试该方法的返回值是否符合预期。因为从理论上讲,您并不关心该方法是作为循环实现的,还是使用迭代器实现的,或者它是否使用数据库来解决问题。那么您希望您的
start方法返回什么? -
没什么,因为它是一个流媒体服务,我正在关注某些逻辑,如果不是,则进入下一个迭代。老实说,几乎是无限循环:) 当然,还有一些数据库操作。如何改变这一点,使其可测试。其实,我也想过要崩溃再回来,但后来使用
next变得很痛苦:(
标签: ruby-on-rails ruby unit-testing rspec