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") } }
应该有用