Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何在除非语句中剔除正在测试的值?_Ruby_Rspec - Fatal编程技术网

Ruby 如何在除非语句中剔除正在测试的值?

Ruby 如何在除非语句中剔除正在测试的值?,ruby,rspec,Ruby,Rspec,比如说,我有这样的东西: unless some_variable *stuff* end 有没有办法去掉某个变量以返回false?取决于从何处获取变量。这很难回答,因为您的代码和变量都挂在真空中。您通常会通过定义某个_变量来控制它们: def create some_variable = MyModel.active? unless some_variable # .. end end 如果您正在使用RSpec,您可以: allow(MyModel).to rec

比如说,我有这样的东西:

unless some_variable
  *stuff*
end

有没有办法去掉某个变量以返回false?

取决于从何处获取变量。这很难回答,因为您的代码和变量都挂在真空中。您通常会通过定义某个_变量来控制它们:

def create
  some_variable = MyModel.active?

  unless some_variable
    # ..
  end
end
如果您正在使用RSpec,您可以:

allow(MyModel).to receive('active?').and_return(false)
在这里,您将变量预处理为false。我知道这是个糟糕的例子,但这只是为了说明一点


另一种情况是,变量是方法参数。在这种情况下,您只需在传递false as和argument的同时调用该方法。

据我所知,您的测试是毫无意义的。因此,这可能会使问题变得更简单。。当调用某个_变量时,它只是检查某个_变量是否为nil,对吗?如果不是nil,它会在块内执行代码吗?