单元测试用例 - 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的主要内容,如果未能解决你的问题,请参考以下文章