前に調べた、これや、これのおさらい。ただ、BrowserのテストはDuskで行えるようになってます。
結局、普通?の$this->get()は外に出られないのかな???
Guzzleのインストール
Laravelのディレクトリで、下記を実行。
composer require guzzlehttp/guzzle
実装
とりあえず、test/Feature/ExampleTest.phpを下記のように書き換えます。
test/Unitでもまあ、動きますが。
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use GuzzleHttp\Client; //use
class ExampleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest1()
{
//client
$client = new Client;
//request先
$url = "http://www.bluecode.jp/test/api.php";
//request
$res = $client->get($url);
//jsonからオブジェクトへ
$obj = json_decode($res->getBody());
//評価
$this->assertEquals(200,$res->getStatusCode());
$this->assertEquals("OK",$obj->status);
$this->assertRegExp('/^Hello$/',$obj->message);
}
}
テストの実行
普通にテストを実行します。
vendor/bin/phpunit
Basic認証への対応
テスト環境ではBasic認証がかかってることも多いかと思いますが、その場合は下記のように記述します。
なお、Guzzle5.0以降とそれ以前では書き方が違うようなので注意が必要です。
public function testBasicTest2()
{
//client
$client = new Client;
//request先(Basic認証がかかっている想定)
$url = "http://www.bluecode.jp/test/api.php";
//request( with basic auth)
$res = $client->get($url,[
'auth' => [
'username',
'password'
]
]);
//評価
$this->assertEquals(200,$res->getStatusCode());
}
assertのパターン
過去記事の再記載ですが、とりあえず、
- ssertEquals($expect,$var) expectとexpectとvarが等しいか?
- assertRegExp($ptn, $var) 正規表現にマッチするかどうか?
- assertNull($var)
- assertTrue($var)
- assertFalse($var)
- assertCount($num,$array)
- assertEmpty($array)
あたりを押さえておけばいいかなと。
その他はphpunit assertでググればいくらでも出てきます。