我在项目中添加了下载JSON
的功能,并将其中的版本号与当前安装的应用版本进行比较,以确定是否应启用该功能。但是,我现在正在尝试对此进行单元测试,我不确定如何模拟当前的应用程序版本。
info.plist
注入一个值吗?info.plist
吗?或者我应该:
在我的类中添加一个函数,从info.plist
文件中检索版本号,然后模拟该函数?
在应用启动时,将版本号存储在NSUserDefaults
中,然后模拟这个?
答案 0 :(得分:0)
我肯定会使用检索版本号的函数。通过这种方式,您可以从生产代码中的info.plist中获取它,并在测试中模拟您想要的任何内容。此外,您还可以测试应用程序版本的检索:)
甚至更好,创建另一个获取应用程序编号的类,并将实例注入到下载JSON的类中。然后,你可以随心所欲地嘲笑这个。
protocol AppVersionProvider {
func getAppVersion() -> String
}
class JSONDownloader {
private let appVersionProvider: AppVersionProvider
public init(appVersionProvider: AppVersionProvider) {
self.appVersionProvider = appVersionProvider
}
public func downloadJSON() {
if appVersionProvider.getAppVersion() != networkingCallResult.appVersion {
...
}
}
}
在那里,您可以使用一些存根模拟AppVersionProvider
协议,并使用info.plist提供程序进行生产。