タグ

ブックマーク / qiita.com/Hiraku (6)

  • Guzzle6専用のモックAPIを自作する - Qiita

    PHPのHTTPクライアントライブラリであるところのGuzzleは、実際にHTTPリクエストを行う部分をハンドラと称して切り離せるようにしており、ここを差し替えることでモックを作ることができます。 テストのときに実際のAPIサーバーへリクエストを投げなくても、思った通りのレスポンスを受け取ったことにして、コードを実行することができます。 Guzzle公式のMockHandler Guzzleには標準でMockHandlerなるテスト用のハンドラが付属します。 http://docs.guzzlephp.org/en/latest/testing.html#mock-handler use GuzzleHttp\Client; use GuzzleHttp\Handler\MockHandler; use GuzzleHttp\HandlerStack; use GuzzleHttp\Psr

    Guzzle6専用のモックAPIを自作する - Qiita
  • モックライブラリ・Prophecyの使い方まとめ - Qiita

    Prophecyとは phpspec/prophecy PHPUnitと組み合わせて使えるモックライブラリ。 元はphpspecの一部として開発されたもので、phpspecと組み合わせなくても単独で使うことができる。 PHPUnit 4.5からパッケージに同梱されるようになった。PHPUnitの新しいバージョンを使っていれば、composer.jsonに加えなくても使うことができる。 テストダブルとは ユニットテストを書くときに、テスト対象の依存の代替として使うオブジェクトをテストダブルと言う。目的はいくつかある。 依存オブジェクトの準備を手抜きする。100行の準備をしないとテストが書けないとしたらユニットテストが読みにくくなってしまう。 実行しづらいメソッドを差し替える。外部へ通信してしまうもの、I/Oが発生するもの、すごーくたまにしか失敗しないものなどを強制的に変更したいとき。 メソッ

    モックライブラリ・Prophecyの使い方まとめ - Qiita
  • curl_multiでHTTP並行リクエストを行うサンプル

    curl_multiはselectシステムコールを使って同時に複数のHTTPリクエストを行うことができます。マルチスレッドやらマルチプロセスを使っているわけではなく、原理はnode.jsなんかと近いI/O多重化で、一度に一つのことしかしていません。 PHPcurlはlibcurlAPIをほぼ踏襲しており、ちょっと取っつきにくいです。クラスでラッピングして、curl_close()などはデストラクタで呼ばれるように自動化すると、もう少しすっきりすると思います。 <?php /** * curl_multiでHTTP複数リクエストを並列実行するテンプレ * */ //タイムアウト時間を決めておく $TIMEOUT = 10; //10秒 /* * 1) 準備 * - curl_multiハンドラを用意 * - 各リクエストに対応するcurlハンドラを用意 * リクエスト分だけ必要 * *

    curl_multiでHTTP並行リクエストを行うサンプル
  • PHPで列挙型(enum)を作る - Qiita

    <?php abstract class Enum { private $scalar; public function __construct($value) { $ref = new ReflectionObject($this); $consts = $ref->getConstants(); if (! in_array($value, $consts, true)) { throw new InvalidArgumentException; } $this->scalar = $value; } final public static function __callStatic($label, $args) { $class = get_called_class(); $const = constant("$class::$label"); return new $class($

    PHPで列挙型(enum)を作る - Qiita
  • phpenvやphpbrewの雑な比較 - Qiita

    PHPの複数バージョンを切り替えながら使えるようにする、ナントカenv/ナントカbrewのPHP版について。久しぶりにセットアップしたのでメモ。 昔からブログ記事はいくつかあるのだけど、比較記事があまり見つからないのでまとめておく。 やりたいこと(前提) 一応の注釈だけど、こういう複数環境切り替え系のセットアップツールは以下を前提にしていると思う。 開発環境用 Unix系やMac OSを想定。Windowsお断り 初心者向けではない php-buildなどでのインストールはビルドを伴うので、開発用ツールのセットアップが必要だし、インストールの時間もかかるし、何よりハマりやすい。普通は番環境やデプロイで使うものではない。 また、大体のツールはgmakeやautotoolsの存在を前提にしているので、Windowsで動かない。Cygwinとか頑張れば可能だろうけど、、たぶんツール作者はWin

    phpenvやphpbrewの雑な比較 - Qiita
  • packagist.orgのミラーサーバを立ててcomposer updateを18倍速くする #packagist - Qiita

    現状報告はこちら packagist.JPの現状について(2015年12月): Architect Note 以下原文 PHPのモダンな依存関係解決ツールであるcomposerですが、動作が遅いですよね。 私も常日頃から遅さを実感しており、何とかしたいと思っていました。 つい先日、GCを切るというハックによってだいぶ速くなりましたが、それでもpackagist.orgからのダウンロード部分は変わらず遅いままです。 Composer を倍速にした、たった 1 行のコード - Shin x blog 例えば、symfony/symfonyのインストールを考えてみます。 # ベンチマーク用の環境準備 $ mkdir composer-bench $ cd composer-bench $ composer require 'symfony/symfony:*' # ベンチマークの公平性のためメタ

    packagist.orgのミラーサーバを立ててcomposer updateを18倍速くする #packagist - Qiita
    kazuomabuo
    kazuomabuo 2014/12/07
    Satis使った事ないけど、Satisとどう違うのだろう。
  • 1