OSS探訪GitHubでログイン

NSURLSession等のrequestをtest時にstubしてfixture・status・delayを再現する

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
5,066
主要言語
Objective-C
ライセンス
MIT
リポジトリ最終更新
2024/05/09
ページ内ナビ

概要

OHHTTPStubsはApple URL Loading System上のnetwork requestをstubするtesting libraryです。host/path等のmatcherでrequestを捕捉し、fixture、status code、header、response timeを返してunit testやbad network conditionを再現できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

request matcherとstub responseでnetwork fixtureを差し込む

isHost等のmatcherで対象requestを選び、fixture fileやcustom responseを返せます。NSURLSessionやそれを利用するAlamofire等のnetworking frameworkにも適用できます。

出典:[2]

delay・status・headerを変えてnetwork conditionをtestする

fake dataだけでなくresponse code、header、response timeを制御し、slow networkやerror pathをreal backendなしで再現できます。test後はstubをremoveして次testへ状態を残さない運用が推奨されています。

出典:[2]

向いている用途

API clientや画面のnetwork success/error/loading状態をdeterministicにtestしたい場合に向く

fixture based unit testやUI testでbackend availabilityに依存せず、同じrequestに対して再現可能なresponseを返したいiOS projectに適します。

出典:[2]

導入前の確認

latest release 9.1.0は2020年で、background sessionやupload simulationには制約がある

GitHub latest releaseは2020年12月でPackage.swiftはSwift tools 4.0です。READMEはbackground NSURLSessionをstubできず、upload progressもsimulateできないと明記しています。基本的にはtest targetまたはDEBUG用途に限定し、現行Swift/Xcodeでの互換性をCIで確認してください。

出典:[4][3][2]

参考にした公式資料

  1. [1]AliSoftware/OHHTTPStubs — GitHub repository(2026-10-06)
  2. [2]OHHTTPStubs 9.1.0 — README(2026-10-06)
  3. [3]OHHTTPStubs 9.1.0 — Package.swift(2026-10-06)
  4. [4]OHHTTPStubs 9.1.0 release(2026-10-06)
  5. [5]OHHTTPStubs MIT license(2026-10-06)
編集部からの補足

API clientやloading/error stateをbackend非依存でdeterministicにtestしたいiOS projectに向きます。latest releaseは2020年のためtest/DEBUG用途に限定し、現行Swift/Xcode互換をCIで確認してください。

3ステップで試す

  1. 1

    OHHTTPStubs 9.1.0をtest dependencyへ追加する

    test targetからOHHTTPStubsSwift productを利用します。latest releaseは古いためcurrent toolchainでbuild確認してください。

    .package(url: "https://github.com/AliSoftware/OHHTTPStubs.git", exact: "9.1.0")
  2. 2

    hostに一致するrequestをstubする

    URL Loading System経由のrequestをhost matcherで捕捉し、local JSON responseを返します。

    import OHHTTPStubs import OHHTTPStubsSwift stub(condition: isHost("api.example.com")) { _ in HTTPStubsResponse(jsonObject: ["ok": true], statusCode: 200, headers: nil) }
  3. 3

    test後にstubをremoveする

    stub stateを次のtestへ残さないようtearDown等で全stubを削除します。

    HTTPStubs.removeAllStubs()
公式READMEで確認

成長

成長の推移 · 直近30日

5,066 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
12

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • ios
  • stubbing
  • network
  • swift
  • objective-c
  • stub
  • ohhttpstubs
  • mock
  • mock-server
  • mocking
Stars
5,066
Forks
598
Watchers
107
Open Issues
47
Contributors
60
所有者種別
User
主要言語
Objective-C
ライセンス
MIT
リポジトリ最終更新
2024/05/09

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?