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