Kotlin Multiplatform:如何在iOS的单元测试中模拟对象

时间:2019-10-10 10:09:30

标签: android ios unit-testing kotlin kotlin-multiplatform

我正在为iOS / Android开发Kotlin多平台(KMP)库。我已经为JVM编写了一些单元测试,并使用MockK为它们创建了间谍和模拟,但是MockK尚不完全支持Kotlin本机。

因此,我想知道其他从事KMP项目的人如何为iOS平台编写单元测试。一个例子将不胜感激。

3 个答案:

答案 0 :(得分:2)

我环顾四周,在Kotlin' General slack中问,这是一个很棒的空间,您可以在这里直接询问Kotlin开发人员和发烧友Kotlin语言相关的问题,包括多平台内容。

但是,在我撰写本文时,我认为您无法使用Mockk或任何其他模拟库来模拟通用模块。

您可以在针对本机(作为平台之一)的通用模块中进行测试,这是老式的interface / impl / stub方法。

答案 1 :(得分:1)

当前,MockK不支持Kotlin / Native或Kotlin / JS。但是,两者均作为重要项目on the project backlog放置:

鉴于模拟库在很大程度上依赖于语言功能(例如反射),这是一个很大的挑战,而Kotlin多平台还没有完全支持这种语言功能(如果没有针对特定平台的大量变通办法,甚至可能无法支持)。

这当然不会阻止您编写自定义模拟类并验证您在其中设置的状态,其中的测试将能够在所有平台上运行。

答案 2 :(得分:0)

我测试了androidTest中的常见资源。那里有Mockk。

我认为这已经足够了,因为Android使用与通用模块完全相同的代码。

shared
> src
>> androidMain 
>> androidTest < tests here
>> commonMain < code here