2014-11-04 254 views
0


我有用PHP编写的REST API,我想用phpunit测试它。
PHPUnit - REST API测试

我写了这样的测试,它的工作原理但响应体是空的。我用小提琴测试了它,它发送响应体。

对不起,我的英语。

class ProgrammerControllerTest extends PHPUnit_Framework_TestCase 

{ 
    public function testPOST() 
    { 

    // create our http client (Guzzle) 
    $client = new Guzzle\Http\Client(); 
    $response = $client->post("http://api.loc/v2/", array(
    'headers' => "User-Agent: Fiddler\r\n" . 
       "Host: api.loc\r\n". 
       "Content-Type: application/x-www-form-urlencoded\r\n". 
       "Content-Length: 34\r\n", 
    'body' => array('kle' =>'sino','lat' => '41', 'long' => '69'), 
    )); 
    var_dump($response); 


    } 
} 

回答

0

您可以使用Laravel的内置方法call来测试您的控制器。

$response = $this->call('POST', '/api/v1.0/pages', $parameters); 
$data = $response->getData(); 

ProgrammerControllerTest应该TestCase

+2

我意识到这是一个老问题和一个旧的答案,但OP从来没有说过他们使用什么框架的任何东西..假设他们正在使用laravel一个宁静的API是不明智的假设,并真的不回答他的问题.... – Logikos 2017-01-25 02:35:12

+0

@Logikos可能是这样的情况,但是我一直在寻找一个简单的,低开销的例子,在Laravel的PHP测试与params ...这对我来说,回答了我的问题。 – ScottMcGready 2017-07-05 21:03:41

0

你能与

var_dump($response->getBody()->getContents()); 

尝试这是我的代码段(它在获取,但它是相同的)

$client = new GuzzleHttp\Client(); 
$response = $client->get('http://192.168.99.100/v1/hello'); 
var_dump($response->getBody()->getContents()); 

结果:

string(13) "{"bar":"foo"}"