2016-05-30 75 views
3

我在Kotlin有一个免费的功能,我想模拟测试目的。Android Kotlin:使用Mockito/PowerMock嘲笑免费功能

我的免费功能是这样的:

fun somethingAwesomeIsDoneHere(param: String) : String { 
    // Awesome 
} 

在我的测试我想嘲笑/存根这样,当它被称为是一个返回值模拟。

when(somethingAwesomeIsDoneHere(something)).thenReturn(retValue) 

即使可以使用PowerMock完成,请让我知道。 PS:我为我的项目使用Kotlin 1.0.1-2。

+0

我怀疑这是可能的Mockito,据我所知,你可以打开的类或接口中只有模拟方法。 – DariusL

回答

2

你不能这样做与Mockito,但我认为它可以用PowerMock完成。我们假设somethingAwesomeIsDoneHere()位于File.kt。然后,你必须嘲笑FileKt类,它的静态方法:

mockStatic(FileKt::class.java) 
expect(somethingAwesomeIsDoneHere(something)).andReturn(retValue) 
replay(FileKt::class.java) 
+0

我无法在我的Kotlin测试中访问'FileKt'类。虽然令人惊讶的是我能够在我的Java测试中这样做! – Abdullah

+0

@Abdullah是的,似乎从Kotlin测试中无法访问'FileKt'。我认为你可以向https://kotl.in/issue提交问题 – Michael

+0

你可以使用'Class.forName'作为解决方法。 –