【问题标题】:Alternative ways to indicate a boolean value on a method在方法上指示布尔值的替代方法
【发布时间】:2015-07-18 22:30:58
【问题描述】:

我目前正在尝试重构一些重复的代码。特别是有一个语句给我带来了最大的麻烦:

some_class = double("some_class", some_method?: true)

我需要用变量名替换 some_method。但是,以下将不起作用。下面只是我想要做的一个例子。

some_method = unique_method
some_class = double("some_class", some_method?: true)

有没有其他的写法:

some_method? # where some_method is a var. 

我需要能够打电话

some_class.some_method? 

对于我的测试用例。

非常感谢任何帮助。提前谢谢你。

【问题讨论】:

    标签: ruby rspec2


    【解决方案1】:

    用字符串包围它应该没问题,或者你可以使用:some_method? => value语法。

    def some_method?
      puts "I am some_method?  True"
    end
    
    some_hash_key = {:some_method? => true}
    send(:some_method?)
    my_variable = :some_method?
    send(my_variable)          
    p some_hash_key
    

    【讨论】:

    • 你有一个例子说明我将如何通过传入参数来做到这一点?
    • 对不起.. 更明确地说,我将如何将方法名称 作为参数传递给函数或方法。 def do_it(method_name)
    • 谢谢 vgoff 我需要解决它,但你让我朝着正确的方向前进。我将此标记为答案。我在下面发布了我的解决方案。
    【解决方案2】:

    好的..所以在一天结束时,上面的工作..这是我正在尝试做的一个工作示例..我正在使用 lambda 来模拟函数

    some_method_one = lambda { return }
    some_method_one = lambda { return }
    
    picked_method = some_method_one
    some_class = double("some_class", picked_one?: true )
    some_class.picked_one? # this returns true
    

    这段代码被完全简化了。我打算做的(还没有写完逻辑)是在rspec中创建一个shared_examples_for。我有 4 种方法将使用相同的逻辑进行测试,因此我需要将方法作为变量传递。希望这是有道理的,并帮助某人.. :-)

    【讨论】:

      猜你喜欢
      • 2021-09-19
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      相关资源
      最近更新 更多