username
(passed in request
パラメータ)がまだdbで利用できない場合、PHPUnitとGuzzleを使用してDBに新しいレコードを作成するREST APIをテストしています。 PHPUnit - Guzzle:希望の応答を返していないAPI呼び出し
{
"success": true,
"id": "<unique_ID>"
}
そして
username
はデシベルですでに利用可能であるならば、それは以下のようなJSONでレスポンスを送信します:それは以下のようなJSONでレスポンスを送信
{
"success": false,
"error": "username is already available"
}
これは、テストするために、私はPHPUnitのテストケースであります上記のmがつがつ食うと一緒にentioned APIは:
これは
setUp
機能はがつがつ食うクライアントpublic function setUp() { $this->client = new GuzzleHttp\Client([ 'base_uri' => 'http://localhost/test/' ]); }
にセットアップするために使用され、これは、実際のテスト関数である:
public function testActualResult() { $response = $this->client->post('service.php', [ 'json' => [ 'operation' => 'create_user', 'user_name' => 'testUser1' ] ]); var_dump($response); }
これをテストするたびに、次のような応答が得られます。
class GuzzleHttp\Psr7\Response#99 (6) {
private $reasonPhrase =>
string(2) "OK"
private $statusCode =>
int(200)
private $headers =>
array(5) {
'Date' =>
array(1) {
[0] =>
string(29) "Tue, 21 Nov 2017 10:27:22 GMT"
}
'Server' =>
array(1) {
[0] =>
string(47) "Apache/2.4.26 (Win32) OpenSSL/1.0.2l PHP/5.6.31"
}
'X-Powered-By' =>
array(1) {
[0] =>
string(10) "PHP/5.6.31"
}
'Content-Length' =>
array(1) {
[0] =>
string(4) "1357"
}
'Content-Type' =>
array(1) {
[0] =>
string(16) "application/json"
}
}
private $headerNames =>
array(5) {
'date' =>
string(4) "Date"
'server' =>
string(6) "Server"
'x-powered-by' =>
string(12) "X-Powered-By"
'content-length' =>
string(14) "Content-Length"
'content-type' =>
string(12) "Content-Type"
}
private $protocol =>
string(3) "1.1"
private $stream =>
class GuzzleHttp\Psr7\Stream#86 (7) {
private $stream =>
resource(408) of type (stream)
private $size =>
NULL
private $seekable =>
bool(true)
private $readable =>
bool(true)
private $writable =>
bool(true)
private $uri =>
string(10) "php://temp"
private $customMetadata =>
array(0) {
}
}
}
しかし、API呼び出し自体から返された応答が返されていません。
上記のAPIをPOSTMAN
でテストすると、完全に機能し、希望の応答が返されます。
ないあなたの質問に、実際の答えは、しかし:
は、例えばUsing Responsesを参照してくださいユニットテストのAPI悪い習慣と考えられています。単体テストでは、クラスとコードを統合するのではなく、テストする必要があります。 APIがダウンすると、単体テストはまだ緑色になります。代わりに、統合テストツールを使用してこれをテストすることを検討する必要があります。この種の作業に適しています。 – OptimusCrime
@OptimusCrimeありがとうございますが、PHPUnitとGuzzleを使用してAPIをテストしたサンプル/ポストが多数あります。誰もあなたのようなことは言及していません。 –
https://stackoverflow.com/a/7564101/921563たとえば – OptimusCrime