我正在使用MockitoSugar编写单元测试用例。
以下是我的示例代码:
class EmployeeRepo {
def addEmplyees(emp:Employee): Long = {
//logic
val res1 = sendReport
val res2 = sendNotification
//logic
}
def sendReport:Boolean={
//logic
}
def sendNotification:Unit={
//logic
}
}
示例测试用例:
class TestEmployeeRepo extends WordSpec with MockitoSugar with ScalaFutures {
"TestEmployeeRepo" must {
"add employee" in {
//mock statements
val result = MockEmployeeRepo.addEmplyees(emp)
//assert statements
}
}
}
object MockEmployeeRepo extends EmployeeRepo {
override def sendReport:Boolean = true
override def sendNotification:Unit = //needs unit
}
在上面的代码中,我试图用必要的模拟来测试addEmployee
方法。因此,在覆盖实际返回sendNotification
的{{1}}时,我不确定应该如何返回Unit
。
我试过这两种方式:
Unit
工作正常,但请建议我遵循正确的方式以及override def sendNotification:Unit = println("")
override def sendNotification:Unit = Unit
应该有什么。提前谢谢。
答案 0 :(得分:1)
您可以返回空块或单位()
的文字符号(也就是空元组)
override def sendNotification:Unit = {}
override def sendNotification:Unit = ()
如下所示,它们都代表文字()
scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._
scala> showRaw(reify(()))
res0: String = Expr(Literal(Constant(())))
scala> showRaw(reify({}))
res1: String = Expr(Literal(Constant(())))
根据Łukasz的评论,有一点不同:虽然()
实际上代表Unit
类型的单例,但空块被设置为只有一个块内部包含()
。
更具体地说,编译器会自动将()
放在任何必须评估为Unit
的块的末尾。你已经注意到了这一点:
override def sendNotification:Unit = println("")
答案 1 :(得分:1)
您可以使用fit = ClustOfVar::hclustvar(X.quanti = mtcars)
ggdendro::ggdendrogram(as.dendrogram(fit),rotate = TRUE)
,这是单位类型的文字值。
()