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

2024-03-12

我正在开发适用于 iOS / Android 的 Kotlin 多平台 (KMP) 库。我为 JVM 编写了一些单元测试,我使用MockK https://mockk.io/创建间谍和模拟,但 MockK 还不完全支持 Kotlin 原生。

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


目前,MockK 不支持 Kotlin/Native 或 Kotlin/JS。然而,两者都被列为重要项目关于项目积压 https://github.com/mockk/mockk/projects/2#card-16016754:

  • Kotlin/Native https://github.com/mockk/mockk/projects/2#card-16016948
  • 科特林/JS https://github.com/mockk/mockk/projects/2#card-16016754

这是一个巨大的挑战,因为模拟库严重依赖反射等语言功能,而 Kotlin 多平台尚未完全支持这些功能(如果没有针对特定平台的大量解决方法,甚至可能无法支持)。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 如何在Python中生成唯一ID? [复制]

    这个问题在这里已经有答案了 我需要根据随机值生成一个唯一的 ID Perhaps uuid uuid4 可能会完成这项工作 看uuid http docs python org library uuid html了解更多信息
  • 如何将来自其他分叉的未合并的上游拉取请求应用到我的分叉中?

    我在 GitHub 上有一个分叉的项目有一个新的拉取请求 我想将其拉入我的分叉中 但作者尚未拉入 有没有一种简单的方法可以将其他分叉的拉取请求应用到我的分叉中 我还缺少其他东西吗 更新 通过网页 您还可以通过 github 网页执行此操作
  • Python Pandas:根据时间范围删除时间序列的行

    我有以下时间序列 start pd to datetime 2016 1 1 end pd to datetime 2016 1 15 rng pd date range start end freq 2h df pd DataFrame
  • 单一职责和混合

    鉴于Mixins http en wikipedia org wiki Mixin通常会在类中引入新的行为 这通常意味着一个类将具有多个行为 如果一个类具有单一职责 则这被定义为该类只有一个变更原因 所以 我可以从两个不同的角度来看待这个问
  • ASP.NET Core 3.1 MVC 中的本地化

    我正在尝试将本地化添加到我的 ASP NET Core 3 1 MVC 项目中 遗憾的是我找不到任何文章或教程来展示如何以简单的方式完成此操作 每个人都有一些我无法理解的问题 谁能告诉我一个简单的方法来做到这一点 好的 我尝试执行syncf
  • document.referrer 是否等于 HTTP Referer 标头?

    如果我点击正常链接http google com http google com to http example com http example com 通常我的浏览器发送到 example com 的 httpreferrer 标头是
  • Android 应用程序的 Twitter 登录

    谁能告诉我从我的 Android 应用程序执行 Twitter 登录开放身份验证的正确步骤 还有一件事是可以在没有 gng 的情况下从我的应用程序执行 Twitter 帐户的登录身份验证到 Twitter 登录页面吗 想法是使用 Twitt
  • Spring data jpa中save和saveAndFlush的区别

    我正在尝试通过测试一些 CRUD 操作来学习 spring data JPAJpaRepository 我遇到了两种方法save and saveAndFlush 我不明白这两者之间的区别 通话时save我的更改也被保存到数据库中 所以有什
  • 如何在更新单独结构中的 @AppStorage 后更新 SwiftUI 视图

    我有以下课程 struct PriceFormatter AppStorage UserDefaultsKey savedCurrency var savedCurrency String let price Float init pric
  • 创建动态规则

    我正在尝试使用代码动态调整相对布局中的图像大小 int height v getHeight int width v getWidth height 50 width 50 RelativeLayout LayoutParams layou
  • NestJs:无法读取模块文件中的环境变量,但可以读取服务文件中的环境变量?

    我有一个 env文件位于我的 NestJs 项目的根目录中 其中包含一些环境变量 奇怪的是 我能够读取服务文件中的变量 但不能读取模块文件中的变量 所以在像这样的服务文件中users service ts 这有效 saveAvatar co
  • 无法从 CursorWindow 读取第 0 行、第 -1 列

    我正在尝试获取表中的记录 我正在使用这个代码 if c null if c moveToFirst String tipId c getString c getColumnIndex DAO TIP ID toString trim Sys
  • 如何为 Prometheus 检测 Java 应用程序代码指标

    我正在尝试将 Java 应用程序的自定义值指标导出到 Prometheus 我读到可以使用 Push Gateway 来完成 下面是我使用下一个方法的示例 static void executeBatchJob throws Excepti
  • pecl 找不到 imagick 包

    我正在尝试在我的 Mac 上安装 imagick 我搜索并阅读了很多 包括这个 但是 我在最后一步遇到了问题 即通过 pecl 实际安装 imagick 软件包 我收到此错误 No releases available for packag
  • 如何为 pwa 添加自定义安装按钮

    我想添加自定义install网站内我的渐进式网络应用程序的按钮 我红色了很多文章并尝试了他们提供的答案 他们使用beforeinstallprompt let deferredPrompt window addEventListener b
  • C++:将成员函数作为普通函数指针传递的闭包

    我正在尝试调用外部库的成员函数 该函数接受函数指针作为参数 Timer every unsigned long period void callback void 但不幸的是我想传递的参数是一个成员函数 void MyClass the m
  • 使用 async/await 将现有的 C# 同步方法转换为异步方法?

    从同步 I O 绑定方法 如下 开始 如何使用 async await 使其异步 public int Iobound SqlConnection conn SqlTransaction tran this stored procedure
  • CSS 网格行高 Safari 错误

    我制作了一个网格模板 其中包含 1fr 1fr 1fr 行 中间行有一个内联图像列表 在 Chrome 和 Firefox 中 图像尊重网格行的高度并适当调整 但是 在 Safari 10 1 2 和 Safari TP 31 中 似乎存在
  • 移动应用程序是否需要遵守欧盟 Cookie 法? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 一位客户向我提出了一个有趣的问题 涉及欧盟 cookie 法及其如何影响他们的移动应用程序 您可能很清楚 Cookie 法 要求网站让用户知道该网站使
  • Kotlin Multiplatform:如何在 iOS 单元测试中模拟对象

    我正在开发适用于 iOS Android 的 Kotlin 多平台 KMP 库 我为 JVM 编写了一些单元测试 我使用MockK https mockk io 创建间谍和模拟 但 MockK 还不完全支持 Kotlin 原生 因此 我想知