XCTest期望用swift方法调用
如何编写一个测试,期望使用swift和XCTest进行方法调用?
我可以使用OCMock,但是它们并没有正式支持,所以没有太多的选择。
正如你所说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() {
}
}
链接地址: http://www.djcxy.com/p/81731.html
上一篇: XCTest expect method call with swift
下一篇: Transfer file to webworker: DataCloneError: The object could not be cloned