代码之家  ›  专栏  ›  技术社区  ›  monksy

在scala中测试高阶函数

  •  0
  • monksy  · 技术社区  · 6 年前

    我有一个案例,我有一个规则列表,可以取消某个特定项目(命令)的资格。每个规则都是一个高阶函数。(用于重用)。

    最后,我需要验证是什么规则导致了失败。我如何确定是什么规则导致了失败?

    有没有一种方法可以让我知道函数的名称是从哪里来的?

    当我测试并返回导致失败的函数时,我得到的是一个非描述性的“”,它与实际返回的内容不相关。

    例如:

       object Library { 
           def testIf5(v:Int): Boolean = { v==5} 
       }
    
       class CommandVerifier { 
          def doesItFail(value: Int, rules: List[(Int)=>Boolean]) {
               rules.find(r=> !r(value))
          }
    
       }
    
       val expected = testIf5
       val actaul = new CommandVerifier().doesItFail(5, List(testIf5))
       actual should be expected (expected) 
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Jordan Cutler    6 年前

    如果您希望在运行时使用函数名,那么这是不可能的,因为函数在运行时没有名称。看见 scala get function name that was sent as param How do I get the function name in Scala? 。我认为你应该独立测试这些规则