我向我的项目添加了功能,该功能可下载JSON
并将其中的版本号与当前安装的应用程序版本进行比较,以确定是否应启用功能。但是,我现在正在尝试对此进行单元测试,并且不确定如何模拟当前应用程序版本。
我可以在测试中将值注入info.plist
吗?
我可以在测试中完全模拟info.plist
吗?
还是我应该:
在我的课程中添加一个函数以从info.plist
文件中检索版本号,然后模拟该函数?
在应用启动时,将版本号存储在NSUserDefaults
中并模拟吗?
最佳答案
我肯定会使用检索版本号的功能。这样,您可以从生产代码中的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提供程序进行生产。