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
而不是HTML,因此您应该使用JSON响应
或所有其他方法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();