jvm scala:未添加private修饰符就无法调用方法[closed]

k4aesqcs  于 2022-11-07  发布在  Scala
关注(0)|答案(1)|浏览(107)

**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。

这个问题似乎与help center中定义的范围内的编程无关。
17小时前就关门了。
Improve this question
我是scala的新手,似乎没有注意到任何问题。正如代码注解中提到的,if(enableXMLMessageLog(method))在没有执行enableXMLMessageLog方法的情况下求值为false。一旦我向该方法添加private,它就开始按预期工作,并在求值时返回true。
方法是抽象类的成员。

你知道这里发生了什么吗?为什么只有在添加private之后才调用它?

z9smfwbn

z9smfwbn1#

我想我明白了。该方法是从一个单元测试类中调用的,只有logBookingMessage方法被设置为when(messageLogger.logBookingMessage(any[LoggingMethod])).thenCallRealMethod(),因此它无法调用方法enableXMLMessageLog,因为它被模拟,因此返回false。
在将private添加到方法时,模拟框架不会模拟和调用方法的实际实现,因此返回true。

相关问题