エンジニアになりたい

エンジニアです

php-vcrの紹介

vcr という有名なgemが存在します。 http通信をmockしてテストをしやすくしてくれるものです。 github.com

vcrが有効になっている状態でhttp通信をするとその内容を記憶してくれます。2回目以降は1回目に通信した内容を使用し、実際に通信は行いません。 手でfixtureのデータを作成する必要がなく、http通信を使用したテストがやりやすくなります。

このvcrのphp版として公開されているのが php-vcr です。 github.com

分かりやすく説明されているページもあります。

PHP-VCR | Record HTTP interactions while testing

github上で紹介されている使い方ではちょっと使いにくかったので改良してみました。

gist.github.com

以下のように使います

<?php

use src\Tests\Support\VcrTrait;

class Test
{
    use VcrTrait;

    public function test()
    {
        $response = $this->useCassette(function () {
             // ここでhttp通信処理。内容を"cassettePath/cassette_name.yml"に記憶してくれる
            return $apiClient->apiRequest();
        }, 'cassettePath', 'cassette_name.yml');
    }
}

useCassette のcallback内にhttp通信を行う処理を書いてあげて、cassetteファイルの場所を指定してあげるだけです。

使いやすくなりました。