单元测试用例 - Swift 3.2

Posted

技术标签:

【中文标题】单元测试用例 - Swift 3.2【英文标题】:Unit test cases - Swift 3.2 【发布时间】:2018-08-09 23:35:08 【问题描述】:

我必须编写单元测试用例来检查是否从单元测试用例调用的方法中调用了特定方法。

class A
    func fetchPersonsData() 
       let b = B()
       b.sendDataToserver([])
     


class B 
  func sendEventToServer(_:[]) 
  

在我的单元测试用例中,我将调用fetchPersonsData() 方法并想检查它是否调用sentEventToServer(_:) 以及参数是什么。

如何在 Swift 3.2 中为此编写测试用例?

我是否应该通过创建 B 类的子类来模拟并覆盖所需的方法并在所需的方法被调用时通过我的测试?

【问题讨论】:

【参考方案1】:

首先添加一个协议:

protocol ServerSender 
    func sendEventToServer(_:[String])

使B符合该协议:

class B: ServerSender 
    func sendEventToServer(_:[String]) 
    

在您的测试目标中添加一个模拟:

class BMock: ServerSender 
    var sendDataToServerCalled = false
    func sendEventToServer() 
        sendDataToServerCalled = true
    

更改A 以允许依赖注入:

class A 
    lazy var b: ServerSender = B()
    func fetchPersonsData() 
        b.sendDataToServer([])
    
 

在您的测试中,注入模拟:

func test_fetchPersonsData_sendsDataToServer() 
    let sut = A()
    let mock = BMock()
    sut.b = mock

    a.fetchPersonsData()

    XCTAssertTrue(mock.sendDataToServerCalled)

【讨论】:

以上是关于单元测试用例 - Swift 3.2的主要内容,如果未能解决你的问题,请参考以下文章

编写单元测试用例说明书的依据是啥

Maven 进行单元测试用例的使用,加载的资源是哪里的

如何设计单元测试用例

测试用例cicd怎么实现的

python中unittest单元测试框架-加载测试用例运行测试用例生成测试报告

单元测试的测试用例