单元测试视图在 XCTestCase 中被驳回

Posted

技术标签:

【中文标题】单元测试视图在 XCTestCase 中被驳回【英文标题】:Unit Testing a view was dismissed in XCTestCase 【发布时间】:2019-10-07 14:10:19 【问题描述】:

我有一个使用 VIPER 模式的应用。

我的LoginViewController 出现了,一些动作发生并且视图被关闭。

我想断言,当LoginPresenter 在我的LoginRouter 中调用dismissViewController 时,视图将被关闭。

我有一个涵盖此行为的 UITest,但是我的 CI 管道中存在代码覆盖问题,UITest 不足以解决它。

我想断言代码中的行为。

  import UIKit

final class LoginRouter 

    private var delegate: LoginRouterDelegate?
    private let view: UIViewController

    init(_ delegate: LoginRouterDelegate?, view: UIViewController) 
        self.delegate = delegate
        self.view = view
    


extension LoginRouter: LoginRouterType 

    func dismissViewController() 
        view.dismiss(animated: false, completion: nil)
    

【问题讨论】:

【参考方案1】:

使用ViewControllerPresentationSpy 中的DismissalVerifier。在 README 描述中,向下滚动到“如何测试关闭模式?”

【讨论】:

以上是关于单元测试视图在 XCTestCase 中被驳回的主要内容,如果未能解决你的问题,请参考以下文章

单元测试用例:XCTestCase vs Sentestcase

为啥在同一个 XCTestCase 中的单元测试之间会有一个新的对象实例?

如何在 ios XCTestCase 中对两个对象不相等进行单元测试

UIButton 点击​​的 XCTestCase

在 XCTestCase 中自动关闭对话框

XCTestCase 崩溃的 WKInterfaceController 子类上的“alloc init”