TestSpy

Swift 5.0 Build Status Carthage compatible Pod version codecov

用于 Spy 对象的 Swift 框架

要求

创建 Spy 对象

要创建 Spy 对象,只需在你的测试类中实现 TestSpy 协议。

class TestClass: TestSpy {
     enum Method: Equatable {
         case test
         case testWithArgument(arument: Int)
     }
     
     var callstack = CallstackContainer<Method>()
}

然后,当你要测试的方法被调用时,你必须在调用栈中记录该方法。

extension TestClass: TestProtocol {
    func test() {
        callstack.record(.test)
    }
    
    func testWithArgument(argument: Int) {
        callstack.record(.testWithArgument(argument: argument))
    }
}

在测试中使用 Spy 对象

XCTAssertTrue(spyObject.check(method: .test, predicate: CallstackMatcher.any))

结合 Nimble 在测试中使用 Spy 对象

expect(spyObject).to(haveReceived(.test))

调用栈匹配器

有一些默认匹配器可用于测试,以检查调用栈内容。

主要的匹配器有

用法

XCTAssertTrue(spyObject.check(method: .test, predicate: CallstackMatcher.before(.testWithArgument(argument: 1))))

与 Nimble 结合使用

expect(spyObject).to(haveReceived(.test), .before(.testWithArgument(argument: 1)))

使用 Sourcery 自动生成 Spy 对象

Sourcery 提供了一种自动生成 Spy 对象的好方法。 你可以找到一个示例 stancil 文件来生成 Spy 对象,这里

使用方法

sourcery --sources "$SOURCESPATH" --templates "$TEMPLATESPATH" --output "$OUTPUTPATH" --args module="$CURRENTFRAMEWORKNAME",import="Foundation",import="UIKit"...

作者

Franco Meloni, franco.meloni91@gmail.com

许可

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