如果我有这样的方法:
require 'tweetstream'
# client is an instance of TweetStream::Client
# twitter_ids is an array of up to 1000 integers
def add_first_users_to_stream(client, twitter_ids)
# Add the first 100 ids to sitestream.
client.sitestream(twitter_ids.slice!(0,100))
# Add any extra IDs individually.
twitter_ids.each do |id|
client.control.add_user(id)
end
return client
end
我想使用 rspec 来测试:
client.sitestream
被调用,带有前 100 个 Twitter ID。client.control.add_user()
使用剩余的 ID 调用。
第二点对我来说是最棘手的——我不知道如何存根(或其他)对象上的方法,该对象本身就是对象的属性。
(我在这里使用Tweetstream,尽管我希望答案可能更笼统。如果有帮助,client.control
将是一个实例TweetStream::SiteStreamClient
。)
(我也不确定像我的示例这样的方法是否是最佳实践,接受并返回这样的client
对象,但我一直在尝试分解我的方法,以便它们更具可测试性。)