首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Binding.pry在共享示例块中失败?

Binding.pry在共享示例块中失败?
EN

Stack Overflow用户
提问于 2021-03-18 21:57:58
回答 2查看 84关注 0票数 1

我有一个项目,在这个项目中,除了在使用共享示例的类中之外,在运行RSpec测试时放置一个binding.pry将会起作用。我们将其设置为有两个块,一个在类本身中处理错误,另一个在共享示例中。结构是这样的(对不起,我不能得到更多的具体信息,有很多代码):

类-> (代码由块包围)

代码语言:javascript
复制
require 'pry'
def class(param, param)
  ClassThatTakesBlock.handle() do |_some_event|
    rest of class's code...
    binding.pry # Fails dramatically when running RSpec
    ...
    end
  end
end

共享示例-> (代码由块包围)

代码语言:javascript
复制
RSpec.shared_examples 'some class' do |optional_param1, optional_param2|
  subject { class(param: param_hash, param: param) }
  ...
  end
end

类规范->

代码语言:javascript
复制
RSpec.describe 'directory/class' do
  it_behaves_like 'some class', false do
  ...
  end
end

问题是,当我需要“撬动”并试图放置一个binding.pry,并运行一个超过该binding.pry的规范时,该规范将抛出一堆错误,并显示类似Failure/Error: subject { class(param: param_hash, param: param) } (共享示例的主题行)的内容。

代码语言:javascript
复制
expected: ("AWS param in class")
              got: ("DISABLE_PRY")
        Please stub a default value first if message might be received with other args as well.

Shared Example Group: "some class" called from ./file_directory/path/class_spec.rb:40

还有一堵很大的墙,看起来像是参数、捆绑路径、rvm标志等。

要让binding.pry在共享示例中工作,我需要做些什么吗?或者,是否有其他方法可以在代码中放置调试器?当我运行RSpec时,我甚至不能让打印语句浮出水面,我也不能调试我的规范。

EN

回答 2

Stack Overflow用户

发布于 2021-03-19 20:54:01

因为关键字classclass中是保留的,所以方法名称ruby导致了这个问题。我的建议是将其命名为klass。

票数 1
EN

Stack Overflow用户

发布于 2021-03-31 02:43:06

我相信我遇到的问题是存根不正确。添加

代码语言:javascript
复制
allow(ENV).to receive(:[])

修复了它,但我也认为清除stdout也会导致问题。

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

https://stackoverflow.com/questions/66692608

复制
相关文章

相似问题

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