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

Abe*_*bel 12 android unit-testing ios kotlin kotlin-multiplatform

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

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

Ste*_*ris 7

目前,MockK 不支持 Kotlin/Native 或 Kotlin/JS。但是,两者都被列为项目积压工作中的重要项目:

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

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


Abe*_*bel 4

我环顾四周,在Kotlin' General slack中询问,顺便说一下,这是一个很棒的空间,您可以直接向 Kotlin 开发人员和爱好者询问与 Kotlin 语言相关的问题,包括多平台的问题。

但至于我写这篇文章的时候,我不认为你可以使用 Mockk 或任何其他模拟库来模拟公共模块。

您可以在针对本机作为平台之一的通用模块中进行测试的是老式的接口/impl/存根方法。