gpt4 book ai didi

Swift 如何对具有依赖关系的函数进行单元测试

转载 作者:行者123 更新时间:2023-11-28 14:50:44 27 4
gpt4 key购买 nike

您好,我是模拟和 stub 的新手,因为这些是我听说过的概念,但实际上还没有看到解释其工作原理的示例。我了解基本的单元测试,但我还没有找到一个地方可以通过一个关于模拟和 stub 的简单示例来获得解释。

在我的应用程序中,我想测试这两个函数,但由于存在依赖关系,我不知道如何去做。

private func setOverviewValues(weeklyData: CDPRewards, formattedTotal: String, displayMode: PointsDescriptionMode) {
let monthYearString = createSubtitle(from: displayMode, with: weeklyData)
view.setOverAllPoints(topValue: formattedTotal, bottomValue: monthYearString)
}

 private func createSubtitle(from displayMode: PointsDescriptionMode, with weeklyData: CDPRewards) -> String {

switch displayMode {
case .weeklyPoints:
if let monthString = weeklyData.month,
let yearString = weeklyData.year {
return displayMode.rawValue + monthString + " " + yearString
}
return PointsDescriptionMode.weeklyPoints.rawValue
default:
return displayMode.rawValue
}
}

我想帮助展示如何实现对这些功能的测试,或者只是一个演示模拟和 stub 的简单示例。在我可以使用的书籍或博客方面指出正确的方向也很棒。

最佳答案

这是简短的回答。

我不对private 函数/方法进行单元测试,只对公共(public)API 进行单元测试。事实上,在这里您对组件的内部结构不感兴趣,而只对它在外部世界的行为感兴趣。

这是长答案。

在您的特定情况下,我只会对第二个函数进行单元测试。为什么?因为第一个包含副作用。您将修改 View 中的某些内容。并且很难使用单元测试来测试 View 。对于 View ,我会使用验收测试(例如用户界面测试)。

回到第二个函数的测试,我将使用基于值的单元测试

因此,给出特定的输入,您应该期望得到正确的输出。还应测试边缘情况。

这里有一些关于这个主题的有用链接:

这是我推荐阅读的一本书(它不是 Swift 而是基于 Java 的):

  • 在测试的指导下开发面向对象的软件

关于Swift 如何对具有依赖关系的函数进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49869668/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com