Ruby on rails 使用Rspec在rails中模拟对TwitterAPI客户端的外部调用。

Ruby on rails 使用Rspec在rails中模拟对TwitterAPI客户端的外部调用。,ruby-on-rails,rspec,mocking,stubbing,Ruby On Rails,Rspec,Mocking,Stubbing,我试图在对模型方法的测试中模拟此调用: client = TwitterAPI.new.client 我不知道如何在测试中做到这一点,因为我已经尝试过了 allow_any_instance_of(TwitterAPI::Client).to receive(:search).with(@search, @since_time, @until_time).and_return(unprocessed_tweets(3, @tag_name, @now-1.weeks, @now))

我试图在对模型方法的测试中模拟此调用:

    client = TwitterAPI.new.client
我不知道如何在测试中做到这一点,因为我已经尝试过了

allow_any_instance_of(TwitterAPI::Client).to receive(:search).with(@search, @since_time, @until_time).and_return(unprocessed_tweets(3, @tag_name, @now-1.weeks, @now))

但这给了我一个名称错误,我觉得,不管是不正确的方法。有什么建议吗

您收到一个名称错误,因为TwitterAPI::Client不存在。当您将:new和:client消息发送到TwitterAPI时,您可以做的是存根响应,后者返回一个响应:search的double


既然如此,为什么不让TwitterClient类在实例化对象时返回一个客户端呢?TwitterAPI.new.client看起来很笨拙。

你能给我一个代码示例,说明你在第二部分的意思吗/