我有一个案例,我有一个规则列表可以取消特定项目(命令)的资格。每个规则都是高阶函数。 (可重用性)。
最后,我需要验证导致失败的规则。如何确定导致失败的规则?
有没有办法可以获取函数来自哪里的函数名?
当我正在测试并且我返回导致失败的函数时,我得到一个非描述性的“”,它与实际返回的内容无关。
这方面的一个例子:
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)
答案 0 :(得分:1)
如果您希望在运行时使用函数名称,那么由于函数在运行时没有名称,因此无法实现。请参阅scala get function name that was sent as param和How do I get the function name in Scala?。我认为你应该独立测试这些规则