在 iOS 上运行 UI 测试时是否可以交换或修补程序集?目前我有一个项目,我已经设置了 Typhoon 框架,我可以像这样修补程序集
var controller: HomeViewController!
override func setUp() {
super.setUp()
// setup assemblies
var blAssembly = BusinessLogicAssembly()
var ctrlAssembly = AppAssembly()
// setup patcher
let patcher = TyphoonPatcher()
patcher.patchDefinitionWithSelector("testManager", withObject: {return FakeManager()})
patcher.patchDefinition(blAssembly.testManager() as TyphoonDefinition, withObject: {
return FakeManager()})
let factory = TyphoonBlockComponentFactory(assemblies: [blAssembly, ctrlAssembly])
factory.attachPostProcessor(patcher)
// get controller
controller = factory.componentForKey("homeViewController") as HomeViewController
// force view to laod
let vcView = controller.view
}
这工作正常。TestManager
它用存根修补。但在这种情况下,我手动调用我的视图控制器。当我运行 UI 测试(启动应用程序时在后台处理控制器)时,是否有办法修补程序集并提供模拟/存根?
例如,假设我有一个调用 Web 服务的视图控制器。Web 服务逻辑包装在一个单独的类中,并使用TyphoonAssembly
. 现在对于我的 UI 测试,我不想联系我的实际 Web 服务,而只是证明了示例数据。我想通过创建我的 Web 服务类的存根并返回测试数据来做到这一点。这可以通过 Typhoon 框架实现吗,因为我无法做到这一点,也无法在任何地方找到示例。
我正在使用 Swift,但 Objective-C 答案也可以使用(只要它兼容)