可测试 0.2.0

Testable 0.2.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017年10月
SwiftSwift 版本3.0
SPM支持 SPM

Pim Nijman 维护。



Testable 0.2.0

Testable




一个受 Sinon.js 启发的 Swift 模拟框架,可以轻松跟踪您的测试替身或将其转换为存根。

安装

Testable 通过 CocoaPods 提供。要安装
它,只需将以下行添加到您的 Podfile 中

pod 'Testable'

用法

可跟踪

假设您有一个测试替身,并希望知道它是否被您当前正在测试的代码调用。

class SomeClass {
    func someMethod(foo: Int, bar: Bool) {
        //
    }
}

通过采用 Spyable 协议并在方法的实现中调用 recordCall(withArgs:),您将能够记录此方法被调用的次数及其参数。

import Testable

class SomeClass: Spyable {
    func someMethod(foo: Int, bar: Bool) {
        recordCall(withArgs: foo, bar)
    }
}

在您的测试中,您现在能够获取一个跟踪此方法调用的间谍的引用。

func testImplementationCallsSomeMethod() {
    let someObject = SomeClass()
    let someOtherObject = SomeOtherClass(object: someObject)
    someOtherObject.doSomething()

    let spy = someObject.spy(forMethod: "someMethod(foo:bar:)")
    XCTAssertTrue(spy.called)
    XCTAssertTrue(spy.calledOnce)
    XCTAssertEqual(spy.firstCall.args[0] as? Int, 42)
    XCTAssertEqual(spy.firstCall.args[1] as? Bool, true)
}

您可以对测试替身的属性执行相同的操作。

import Testable

class SomeClass: Spyable {
    var someProperty: Int {
        get { recordGetProperty() }
        set { recordSetProperty(withValue: newValue) }
    }
}

在您的测试中,您可以获取属性间谍的引用。

func testImplementationGetsAndSetsProperty() {
    let someObject = SomeClass()
    let someOtherObject = SomeOtherClass(object: someObject)
    someOtherObject.doSomethingElse()

    let getPropertySpy = counter.spy(forGetProperty: "someProperty")
    XCTAssertTrue(getPropertySpy.called)
    XCTAssertTrue(getPropertySpy.calledOnce)

    let setPropertySpy = counter.spy(forSetProperty: "someProperty")
    XCTAssertTrue(setPropertySpy.called)
    XCTAssertTrue(setPropertySpy.calledOnce)
    XCTAssertEqual(setPropertySpy.firstCall.args[0] as? Int, 0)
}

存根

即将推出…

作者

Pim Nijman,@pnijman

许可证

Testable 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。