junit 如何在Kotlin中使用Mockito模拟类的私有数据成员?

t3psigkw  于 2022-11-24  发布在  Kotlin
关注(0)|答案(1)|浏览(240)

假设我们有一个类Employee,其中有一些私有数据成员和公共方法。我想创建一个Junit测试用例来测试方法是否被调用。

class Employee constructor(employeeName: String?){
private var isEligibleForPromotion = false
private var promotedPosition: PromotedPosition? = null

    init {
        try{
            // checking If Employee is eligible for promotion
        } catch() {}
    }
    
    fun givePromotion(employeeName: String?) {
        if(isEligibleForPromotion) {
            promotedPosition.promote(employeeName) //calls promote () in class PromotedPosition
        }
    }

}

现在,我想写一个测试用例来确保promotedPosition.promote()是否被调用。但是为了实现它,我需要模拟私有变量 isEligibleForPromotion,因为我需要测试它的true和false。
有谁能帮我个忙吗。
我试着嘲笑和监视类和私有变量
isEligibleForPromotion
。但是做不到。

xj3cbfub

xj3cbfub1#

你的测试用例应该测试Employee类的行为,而不是它的内部,所以你应该模拟的是类与什么交互,而不是它的私有属性。简而言之,使用类的输入设置你的初始状态,并Assert你的类从外部的可观察行为。
为了实现它,我需要模拟私有变量isEligibleForPromotion,
你不应该需要这个。首先是什么让这个变量成为true或false的呢?你应该从你的Employee类之外模拟这个东西,它让这个类把变量设置为true或false。

相关问题