[英]XCTest expect method call with swift
如何編寫一個使用swift和XCTest進行方法調用的測試?
我可以使用OCMock,但他們並沒有正式支持swift,所以沒有多少選擇。
正如你所說,OCMock不支持Swift(也不支持OCMockito),所以現在我看到的唯一方法是創建一個手動模擬。 在swift中,由於您可以在方法中創建內部類,但是這樣做會有點痛苦,但仍然不像模擬框架那樣方便。
這里有一個例子。 代碼是自解釋的,我必須做的唯一事情(參見下面的編輯1)使其工作是將我想要在測試中使用的類和方法聲明為public(似乎測試類不屬於相同的應用程序的代碼模塊 - 將嘗試找到一個解決方案)。
編輯1 2016/4/27:由於您可以使用“@testable import ModuleName”功能,因此不再需要將您想要測試的類聲明為公共類。
考試:
import XCTest
import SwiftMockingPoC
class MyClassTests: XCTestCase {
func test__myMethod() {
// prepare
class MyServiceMock : MyService {
var doSomethingWasCalled = false
override func doSomething(){
doSomethingWasCalled = true
}
}
let myServiceMock = MyServiceMock()
let sut = MyClass(myService: myServiceMock)
// test
sut.myMethod()
// verify
XCTAssertTrue(myServiceMock.doSomethingWasCalled)
}
}
MyClass.swift
public class MyClass {
let myService: MyService
public init(myService: MyService) {
self.myService = myService
}
public func myMethod() {
myService.doSomething()
}
}
MyService.swift
public class MyService {
public init() {
}
public func doSomething() {
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.