2016-06-27 5 views
0

Kotlin Unit Testing for Function Parameter and Object에 따라 함수 변수 funcParam을 테스트 할 수 있습니다. 이는 개체 함수 변수이기 때문입니다. 내 장치를 작성하는 방법을 코드가 (우리가 그것을 위해 불필요한 임시 변수를 제거 할 수있는 아주 좋은 코 틀린 기능입니다) 익명/인라인 함수 매개 변수를 사용하여 작성하지만 경우Kotlin 익명 함수 매개 변수 단위 테스트

...

class MyClass1(val myObject: MyObject, val myObject2: MyObject2) { 
    fun myFunctionOne() { 
     myObject.functionWithFuncParam{ 
      num: Int -> 
      // Do something to be tested 
      myObject2.println(num) 
     } 
    } 
} 

class MyObject() { 
    fun functionWithFuncParam(funcParam: (Int) -> Unit) { 
     funcParam(32) 
    } 
} 

코드의이 부분을 테스트 해 보겠습니까?

함수 매개 변수의 인라이닝 (위와 같음)은 단위 테스트에 적합하지 않으므로 피해야합니까?

답변

0

잠시 후 테스트 길은 Argument Captor를 사용하는 것입니다. 더 많은 정보 https://medium.com/@elye.project/how-to-unit-test-kotlins-private-function-variable-893d8a16b73f#.1f3v5mkql

@Test 
fun myTest() { 
    val myClass1 = MyClass1(mockMyObject, mockMyObject2) 
    val argCaptor = argumentCaptor<(Int) -> Unit>() 
    val num = 1 //Any number to test 

    myClass1.myFunctionOne() 
    verify(mockMyObject).functionWithFuncParam(argCaptor.capture()) 
    argCaptor.value.invoke(num) 

    // after that you could verify the content in the anonymous function call 
    verify(mockMyObject2).println(num) 
} 

참조

관련 문제