首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法测试一个方法是不是启动了窥探?

有没有办法测试一个方法是不是启动了窥探?
EN

Stack Overflow用户
提问于 2018-06-07 08:06:38
回答 1查看 152关注 0票数 0

我正在构建一个gem,它为ruby gem开发提供了一个比当前选项更方便、更具可配置性的‘控制台’(即'bundle console')。

因此,如果不是整个gem最重要的一个方面,那就是它实际上打开了一个控制台会话,我目前已经在start方法中设置了这个会话:

class MyConsole 
  def start
    Pry.start(self)
  end
end

我正在尝试测试这个功能,但这很困难,因为他们没有很多好的资源来做这件事。这也真的很烦人,因为每次我在rspec中运行这个方法时,pry都会打开,我必须在完成其余的测试之前退出它。

我有三个主要问题:

  1. 如何在rspec中运行启动撬动的方法,而不实际启动撬动?
  2. 我如何具体测试该方法是否确实启动撬动?
  3. 假设1和2是可能的,我如何测试该方法在什么上下文中启动撬动?
  4. (注意start方法是如何调用Pry.start(self)的,这意味着应该在MyConsole实例的上下文中打开pry会话。)
EN

回答 1

Stack Overflow用户

发布于 2018-06-07 09:52:41

最好的方法可能是使用RSpec spy

您的测试可能如下所示:

describe MyConsole do
  describe '#start' do
    it 'calls Pry.start' do
      described_class.start
      expect(Pry).to have_received(:start).with('your_args_here')
    end
  end
end

这是对RSpec存根选项的一个很好的解释,你可以在这里学到更多:https://about.futurelearn.com/blog/stubs-mocks-spies-rspec

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50731284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档