RSpec/Ruby-在'let'块中创建进程

RSpec/Ruby-在'let'块中创建进程,ruby,rspec,Ruby,Rspec,我想定义一个要传递给各种方法的Proc,我想在let块中定义它 let(:proc) { Proc.new { |f| f.write("c1,c2,c3") } } 然而,我不断地得到错误 ArgumentError: tried to create Proc object without a block 虽然Proc显然有一个阻塞。当我在IRB中单独执行Proc时,它会工作,因此我怀疑这与let如何初始化它有关 有办法解决这个问题吗 谢谢 我无法复制这个。也许你有一个旧版本的RSpec

我想定义一个要传递给各种方法的
Proc
,我想在
let
块中定义它

let(:proc) { Proc.new { |f| f.write("c1,c2,c3") } }
然而,我不断地得到错误

ArgumentError: tried to create Proc object without a block
虽然Proc显然有一个阻塞。当我在
IRB
中单独执行Proc时,它会工作,因此我怀疑这与
let
如何初始化它有关

有办法解决这个问题吗


谢谢

我无法复制这个。也许你有一个旧版本的RSpec

无论如何,不要忘记
proc
proc.new
的Ruby缩写:

proc { "hello" }.call
# "hello"

proc
# ArgumentError

您可能只是遇到了命名冲突。尝试将
let
参数名称更改为“proc”以外的其他名称。

我无法复制该名称。也许你有一个旧版本的RSpec

无论如何,不要忘记
proc
proc.new
的Ruby缩写:

proc { "hello" }.call
# "hello"

proc
# ArgumentError

您可能只是遇到了命名冲突。尝试将
let
参数名称更改为“proc”以外的其他名称。

如果遇到以下问题:

let(:proc) { ->(f) { f.write("c1,c2,c3") } }

对于任何在这个问题上绊倒的人来说都应该有效:

let(:proc) { ->(f) { f.write("c1,c2,c3") } }
应该有用