在scala中测试更高阶函数

时间:2018-03-25 23:22:53

标签: scala higher-order-functions

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

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

有没有办法可以获取函数来自哪里的函数名?

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

这方面的一个例子:

   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 个答案:

答案 0 :(得分:1)

如果您希望在运行时使用函数名称,那么由于函数在运行时没有名称,因此无法实现。请参阅scala get function name that was sent as paramHow do I get the function name in Scala?。我认为你应该独立测试这些规则