MountebankSwift

一个 Swift 客户端库,用于 Mountebank - 开源工具,提供基于网络的测试替身。它提供了所有的 API 功能,用于与运行中的 Mountebank 实例交互。

Mountebank logo holding a bottle with Swift's icon on it

使用方法

一旦 安装 完成,您需要使用 mb start 启动 Mountebank 服务器。您可以导入 MountebankSwift 模块并在您的测试中设置 MountebankSwift

import XCTest
import MountebankSwift

final class ExampleUITests: XCTestCase {

    private var mountebank = Mountebank(host: .localhost)

    override func setUp() async throws {
        // Test if Mountebank is running if it failing please start Mountebank with `mb start`.
        try await mountebank.testConnection()
    }

    override func tearDown() async throws {
        // Remove all imposters to have a clean Mountebank instance for the next tests.
        try await mountebank.deleteAllImposters()
    }

    func testExample() throws {
        let stub = Stub(
            response: Is(statusCode: 201, body: .text("text")),
            predicate: .equals(Request(path: "/test"))
        )
        let imposter = Imposter(networkProtocol: .http, stubs: [stub])
        // Post the imposters to start testing against.
        try await mountebank.postImposter(imposter: imposter)

        let app = XCUIApplication()
        app.launch()
    }
}

更多示例,请参见演示应用程序 https://github.com/MountebankSwift/MountebankExampleApp/

文档

文档可在 Swift Package Index 网站上找到。

安装

使用 Xcode

警告

默认情况下,Xcode 将尝试将 MountebankSwift 包添加到您项目的主要应用程序/框架目标。请确保将 MountebankSwift 添加到测试目标,如下面最后一步所述。

  1. File 菜单,导航到 Swift Packages 并选择 Add Package Dependency…
  2. 输入包仓库 URL:https://github.com/MountebankSwift/MountebankSwift
  3. 确认版本并让 Xcode 解析包。
  4. 在最后一个对话框中,将 MountebankSwift 的 Add to Target 列更新到包含使用 Mountebank 的测试的测试目标。

使用 Swift Package Manager

要将 MountebankSwift 添加到使用 SwiftPM 的项目中,您可以将其作为依赖项添加到 Package.swift

dependencies: [
  .package(
    url: "https://github.com/MountebankSwift/MountebankSwift",
    from: "0.0.0"
  ),
]

接下来,将 MountebankSwift 添加为您的测试目标的依赖项

targets: [
  .target(name: "MyExampleApp"),
  .testTarget(
    name: "MyExampleAppTests",
    dependencies: [
      "MyExampleApp",
      .product(name: "MountebankSwift", package: "MountebankSwift"),
    ]
  )
]

许可证

MIT 许可证 (MIT)。更多信息请参见 许可证文件