2016-04-13 10 views
1

私が書いたAPIでこれまでにテストケースを書いたことはありませんでした。これは、常にエラーで失敗しているPHPUnitが200のときに404を返す

public function testRequestCorrectApiKey() 
    { 
     //Request with X-Authorization sending correct API Key 
     $response = $this->call('POST', '/authenticate', ['email' => '[email protected]', 'password' => 'phpunittest', [], [], ['X-Authorization' => '123workingapikey123']]); 

     $this->assertEquals(200, $response->status()); 
    } 

は::

Failed asserting that 404 matches 200

この自然にあることを示すだろう、私はポストの要求にルートを呼び出すようにしようとしているので、以下の使用しています

要求を間違ったパスに送信しています。正しいURLに投稿されていることを確認するにはどうすればよいのですか?

.envファイルのAPP URLをhttp://localhost/gm-api/publicと私のconfig/app.phpファイルに更新しようとしました。私が間違っているつもりです

protected $baseUrl = 'http://localhost/gm-api/public'; 

は、私はまたして株式TestCase.phpを更新しましたか?

+2

デバッガでステップスルーしますか? – Gordon

+0

@Gordon私はコマンドラインからphpunitを実行しているときにどうすればよいですか? – James

+0

ここに行く:http://blog.doh.ms/2011/05/13/debugging-phpunit-tests-in-netbeans-with-xdebug/ 実際のコードは機能するが、単体テストが失敗し、自分の存在に疑問を持ち始めます;) – Mysteryos

答えて

0

私はこの問題を抱えており、これを行うにはGuzzleを使ってテストを実行するのが良い方法だと個人的に考えています。

/** 
* Send a request with the correct API Key 
*/ 
public function testRequestCorrectApiKey() 
{ 
    $key = ApiKey::find(1); 

    //Request with X-Authorization sending correct API Key 
    $path = 'authenticate'; 
    $client = new Client(['base_uri' => env('APP_URL', 'http://localhost/gm-api/public/')]); 
    $response = $client->request("POST", $path, ["email" => "[email protected]", "password" => "phpunittest", "headers" => ["X-Authorization" => $key->key ]]); 
    $status_code = $response->getStatusCode(); 

    $this->assertEquals(200, $status_code); 
} 

これの利点は、あなただけのAPP_URL.envファイル内のベースURLを設定することができ、行ってもいいです。

$this->call()がデフォルトのテストケースで$baseUrlを変更した後に動作しない理由がわかりません。間違ったURLにまだ当てられていると仮定できます。しかし、Guzzleを使用して私のためにこれを解決しました。実際にはPHPUnitが独自のバージョンを起動しているにもかかわらず、現在のサーバー環境をテストしています。

関連する問題