Moxie

Build Status License Pod

一个活泼的 Swift 模拟库

Moxie

使用 Moxie

假设你有一个想要模拟的协议。

protocol List {
    mutating func add(_ item: String)
    mutating func clear()

    func get(_ index: Int) -> String?
}

你可以使用 Moxie 来创建一个 mock 对象。

import Moxie

struct MockList: Mock, List {
    var moxie = Moxie()

    mutating func add(_ item: String) {
        record(function: "add", wasCalledWith: [item])
    }

    mutating func clear() {
        record(function: "clear")
    }

    func get(_ index: Int) -> String? {
        return value(forFunction: "get")
    }
}

然后你就可以在你的测试中使用它。

func testList() {

    var mockList = MockList()

    // verifying invocations
    mockList.add("one")
    mockList.clear()

    XCTAssertTrue(mockList.invoked(function: "add"))
    XCTAssertEqual("one", mockList.parameters(forFunction: "add")[0] as? String)
    XCTAssertTrue(mockList.invoked(function: "clear"))

    // stubbing
    mockList.stub(function: "get", return: "first")

    XCTAssertEqual("first", mockList.get(0))
}

文档

  1. 安装
  2. 创建 Mock 对象
  3. 桩接
  4. 验证调用