2016-04-13 11 views
0

私はSymfony2を使用してREST APIを構築しています。私はすでにLiip bundleを機能試験に使用しており、すべての備品を生成するためにAliceFakerを使用しています。しかし、JSONがPOSTデータに含まれているのでPOST呼び出し自体を直接テストしたいときには少し問題があります。そのため、私の機能はかなり長く、醜く、判読不能になりました。Symfony2 APIテストYAML/Fakerを使用したPOST

私はYAMLファイルに変換し、クラスの外に偽のJSONを移動することを決めた後、symfonyのパーサを使用してそれらをロードする:

private function loadYaml($resource){ 
     $data = Yaml::parse(file_get_contents('src/AppBundle/DataFixtures/YAML/' . $resource . '.yml')); 
     return $data; 
} 

これは私が簡単に戻ってそれらを変換することができるので、非常にうまく機能しているようですJSONオブジェクトに追加して呼び出して使用してください:

$postData = json_encode($this->loadYaml('newapplication')); 
$this->client->request(
    'POST', 
    '/api/application/save/', 
    array('data' => $postData), // The Request parameters 
    array(), // Files 
    array(), 
    'mybody', // Raw Body Data 
    true 
); 

私の最初の質問は、これは正しいアプローチですか?私の人生をはるかに簡単にするために私が逃したバンドルはありますか?

私の2番目の質問は、このYAML構造内でFakerを使用することが可能です。フィクスチャでは、フィクスチャがロードされると自動的にエンティティにランダムではあるが意味のある値が入力されるように、Faker関数(例:< firstName()>)を呼び出します。これらのYAML構成でそれらを使用することは可能でしょうか?

ありがとうございます! ;)

答えて

0

symfony \ Bundle \ FrameworkBundle \ Test \ WebTestCaseのWebTestCaseは、symfonyプロジェクトのREST APIのテストを行うのがいいです。

POSTでは、データは本体にあり、パラメータはありません。 (How are parameters sent in an HTTP POST request?

我々のアプリケーションで

$this->client->request(
    'POST', 
    '/api/application/save/', 
    array(), // The Request parameters 
    array(), // Files 
    array(), 
    $postData, // Raw Body Data 
    true 
); 
+0

を試してみて、データはリクエストパラメータの中に送信されます。 Liip BundleのWebTestCaseを使用しています。これにはいくつか興味深い機能が追加されています。 – MarcSitges

関連する問題