Laravel 4 Codeception Laravel sendAjaxGetRequest返回空字符串

Laravel 4 Codeception Laravel sendAjaxGetRequest返回空字符串,laravel-4,codeception,Laravel 4,Codeception,你知道为什么这会返回一个空字符串吗 public function tryToTest3(AcceptanceTester $I) { $I->wantTo('To see a 200 status code and a json response'); $I->haveHttpHeader('Content-Type', 'application/json'); $I->sendAjaxGetRequest('/use

你知道为什么这会返回一个空字符串吗

public function tryToTest3(AcceptanceTester $I)
    {
        $I->wantTo('To see a 200 status code and a json response');
        $I->haveHttpHeader('Content-Type', 'application/json');

        $I->sendAjaxGetRequest('/users',array());

        $I->seeResponseCodeIs('200');
        $I->seeResponseIsJson();// until here green bar
        dd($I->grabResponse()); // empty string
    }

Acceptance Tests (5) ----------------------------------------------------------------------------------------------------------------------------
Modules: PhpBrowser, AcceptanceHelper, Db, REST
-------------------------------------------------------------------------------------------------------------------------------------------------
Trying to try to test (LoginCest::tryToTest)                                                                                                
Scenario:
 PASSED 

Trying to try to test2 (LoginCest::tryToTest2)                                                                                              
Scenario:
 PASSED 

Trying to To see a 200 status code and a json response (LoginCest::tryToTest3)                                                              
Scenario:
* I have http header "Content-Type","application/json"
* I send ajax get request "/users",
  [Response] 200
  [Page] http://localhost/laravel/phpunit/public/users
  [Cookies] []
  [Headers] {"Date":["Thu, 31 Jul 2014 08:49:58 GMT"],"Server":["Apache/2.2.22 (Ubuntu)"],"X-Powered-By":["PHP/5.4.6-1ubuntu1.4"],"Vary":["Accept-Encoding"],"Content-Length":["120"],"Content-Type":["text/html"]}
* I see response code is "200"
* I see response is json 
* I grab response 
string(0) ""
NB

在我的app/bootstrap/start.php中

if ((gethostname() === 'homestead') && (isset($_SERVER['REMOTE_ADDR'])) && ($_SERVER['REMOTE_ADDR'] === '127.0.0.1'))
{
    dd('homestead');
    $env = $app->detectEnvironment(['codeception' => ['homestead']]);
}
else
{ 
    $env = $app->detectEnvironment(['local' => ['homestead']]);
}
宅地永远不会印刷

而这将打印实际响应并打印homestead


试试这个,而不是$I->grabResponse()


我也有同样的问题,但我认为我对测试工具的理解有误

在我的例子中,我试图测试由接受AJAX POST请求的控制器提供的JSON响应

我试图测试一条successfull样式的flash消息是否在div中显示给用户,但是由于我无法测试Javascript,所以我在响应中寻找JSON。然后我谈到了null作为JSON给出的情况

我尝试了所有可能的标题和组合,然后我在PHPtest.club中得到了这样的回应,我认为它可能会像帮助我一样帮助你

这是关于
sendPOST
sendAjaxPostRequest
之间的区别,然后我意识到我使用sendAjaxPostRequest的方式是错误的

基本上:

  • sendajaxrequest
    用于测试
    HTML响应
    ,因此您应该使用
    请参见
    请参见元素
    以及这些方法

  • sendX
    设计用于
    JSON响应
    而不是HTML,因此您应该使用
    seereponeissjson
    或所有其他方法

我希望能对你或其他人有所帮助

你好


我要感谢davert给我如此有意义的回复。

感谢你给我写了这么一封非常有用且提及不多的便条。
public function tryToTest3(AcceptanceTester $I)
    {
        $I->wantTo('To see a 200 status code and a json response');
        $I->haveHttpHeader('Content-Type', 'application/json');

        $I->sendGET('/users',array());

        $I->seeResponseCodeIs('200');
        $I->seeResponseIsJson();
        dd($I->grabResponse()); // the good response
    }
    Scenario:
     PASSED 

    Trying to To see a 200 status code and a json response (LoginCest::tryToTest3)                                                              
    Scenario:
    * I have http header "Content-Type","application/json"
    * I send get "/users",
      [Request] GET http://localhost/laravel/phpunit/public//users
      [Response] [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
      [Headers] {"Date":["Thu, 31 Jul 2014 09:12:43 GMT"],"Server":["Apache/2.2.22 (Ubuntu)"],"X-Powered-By":["PHP/5.4.6-1ubuntu1.4"],"Cache-Control":["no-cache"],"Set-Cookie":["laravel_session=eyJpdiI6IjdxSVE3RzFEYUw4Q0VmbWNWTzlVVkE9PSIsInZhbHVlIjoiSXY5c2xZbVlmdTdSU1hjNTJuVU1cLzlkZXRwQmRGOEc2R3dscTBtY3JHRVwvR3V5TWM2K1BkVkpmdERDY3h0NkloU09CaUFNN0cwSk56TDBZbmhIOVVLZz09IiwibWFjIjoiNzE2YTlhZGEyMTIyZTdlODQ0ZjA0ZGEzZjE5NDg0MTBlMWNkY2IzMzRkN2NhNjEzOTg5ZTQ5NmRkNDU2OTE4MyJ9; expires=Thu, 31-Jul-2014 11:12:43 GMT; path=/; httponly"],"Transfer-Encoding":["chunked"],"Content-Type":["application/json"]}
      [Status] 200
    * I see response code is "200"
    * I see response is json 
    * I grab response 
    string(52) "[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]"
$response = $I->grabDataFromJsonResponse();