小编Ort*_*ton的帖子

如何依赖注入故事板托管的UIViewControllers?

大家好我正在尝试测试我项目的ViewControllers之一.这个类依赖于另一个辅助类,如下所示:

private let dispatcher: Dispatcher = Dispatcher.sharedInstance
private var loginSync = LoginSync.sharedInstance
private var metadataSync = MetadataSync.sharedInstance
Run Code Online (Sandbox Code Playgroud)

这些辅助类在UIViewController生命周期中使用,如viewDidLoad或viewWillAppear.在我的测试中,我使用UIStoryboard类实例化ViewController类,如下所示:

func testSearchBarAddedIntoNavigationViewForiOS11OrMore() {
    // Given a YourFlow ViewController embedded in a navigation controller
    let mockLoginSync = MockLoginSync()
    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    // Here is too early and view controller is not instantiated yet and I can't assign the mock.
    let vc = storyboard.instantiateViewController(withIdentifier: "YourFlow")
    // Here is too late and viewDidLoad has already been called so assigning the mock …
Run Code Online (Sandbox Code Playgroud)

testing dependency-injection storyboard ios swift

1
推荐指数
1
解决办法
348
查看次数

标签 统计

dependency-injection ×1

ios ×1

storyboard ×1

swift ×1

testing ×1