【问题标题】:Codeception API testing: stuck at passing json payload to REST serviceCodeception API 测试:卡在将 json 有效负载传递给 REST 服务
【发布时间】:2014-10-30 16:08:27
【问题描述】:

我发现了这个很酷的工具,叫做codeception,用于在 PHP 中进行测试。我非常喜欢它。我开始编写 API 测试用例。但我被困在将 json 有效负载发布到 REST 服务上。我该怎么做?

我有一个名为 /order 的 REST 端点,它接受 JSON 有效负载。该服务是在 Laravel4 上构建的,因此我使用 Input::json()->all() 接受 Laravel4 中的有效负载。

我尝试过类似的方法

$filename = __DIR__.'/createOrder.json';
$I->haveHttpHeader('Content-Type', 'application/json');
**$I->sendPOST('order', null, array($filename));**  
$I->seeResponseCodeIs(200);
$I->seeResponseIsJson();

但它给了我 500 内部服务器错误,因为我的服务接受 json 有效负载而不是文件形式。

以前有人做过类似的事情吗?

提前致谢。

【问题讨论】:

    标签: laravel-4 codeception


    【解决方案1】:

    我知道这是一个老问题,但对于其他偶然发现此问题的人,请尝试:

    $I->haveHttpHeader('Content-Type','application/json');

    它肯定可以工作。

    【讨论】:

    • 谢谢。这对我有帮助。
    【解决方案2】:

    我这样做了

    $exampleData = [
        'name' => 'adam',
        'age' => 99
    ];
    
    $json = json_encode($exampleData);
    
    $I->sendPOST('/endpoint', $json);
    

    更多详情请看Github issues

    【讨论】:

      【解决方案3】:

      @ Sameer,我尝试过并遇到过类似的问题。然后我解决了这个问题。

      $filename = __DIR__.'/createOrder.json';
      $I->sendPOST('order', getPostParams($filename));
      

      现在在您的套件中创建一个名为“helpers”的新文件夹并将"<suiteName>Helper.php" 添加到其中。

      在此处添加以下代码

      function getPostParams($filename){
              if(!file_exists($filename)){
                  print "MISSING FILE     ".$filename."\n";
                  return;
              }
              $jsonData= json_decode(file_get_contents($filename));
              if(!$jsonData){
                  print "INVALID JSON CONTENT     ".$filename."\n";
                  return;
              }   
      
              return (array)($jsonData);
          }
      

      转到"tests"文件夹内的_bootstrap.php并添加这个

      require_once('<suiteName>/helpers/<suiteName>Helper.php');

      现在进行构建并运行测试套件。你应该能够通过错误:)

      【讨论】:

        猜你喜欢
        • 2018-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-26
        • 2020-02-04
        • 1970-01-01
        • 2018-10-06
        相关资源
        最近更新 更多