2016-02-27 100 views
0

我嘗試在Laravel中編寫測試。我提交了4個字段,我想檢查是否收到令牌作爲迴應。 我知道我這樣做,但我不知道如何在測試中檢查它。檢查API是否返回Laravel中的令牌(單元測試)

public function testSignup() 
{ 

    $this->json('POST', '/api/auth/signup',[ 
     'prenom' => 'TestPrenom', 
     'nom' => 'TestNom', 
     'email' => '[email protected]', 
     'password' => 'motdepasse' 
     ])->seeJson(['token']); 

} 

供參考,在這裏我得到運行測試錯誤:

有1次失敗:

1) SignupTest::testSignup 
Unable to find JSON fragment [["token"]] within [{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImlzcyI6Imh0dHA6XC9cL2xvY2FsaG9zdFwvYXBpXC9hdXRoXC9zaWdudXAiLCJpYXQiOjE0NTY1Nzk2MTAsImV4cCI6MTQ1NjU4MzIxMCwibmJmIjoxNDU2NTc5NjEwLCJqdGkiOiI3YTlmODFmZDA3ZDc2NDdlZTA4NTE5NTgzYWFhZTRlYSJ9.P3SUqxpf1vTfWmSFH4aTC9GESloYTutFNOBpw0xgrjA"}]. 
Failed asserting that false is true. 

/home/ubuntu/workspace/zoneapi/vendor/laravel/framework/src/Illuminate/Foundation/Testing/CrawlerTrait.php:262 
/home/ubuntu/workspace/zoneapi/vendor/laravel/framework/src/Illuminate/Foundation/Testing/CrawlerTrait.php:221 
/home/ubuntu/workspace/zoneapi/tests/SignupTest.php:22 

我試圖用seeJsonStructure()方法,但我得到了未定義的方法錯誤。在這裏看到:

PHPUnit 4.8.23 by Sebastian Bergmann and contributors. 



    [Symfony\Component\Debug\Exception\FatalErrorException] 
    Call to undefined method SignupTest::seeJsonStructure() 



Fatal error: Call to undefined method SignupTest::seeJsonStructure() in /home/ubuntu/workspace/zoneapi/tests/SignupTest.php on line 22 

Call Stack: 
    0.0002  237272 1. {main}() /home/ubuntu/workspace/zoneapi/vendor/phpunit/phpunit/phpunit:0 
    0.0214 1801432 2. PHPUnit_TextUI_Command::main() /home/ubuntu/workspace/zoneapi/vendor/phpunit/phpunit/phpunit:47 
    0.0214 1802056 3. PHPUnit_TextUI_Command->run() /home/ubuntu/workspace/zoneapi/vendor/phpunit/phpunit/src/TextUI/Command.php:100 
    0.3897 6474744 4. PHPUnit_TextUI_TestRunner->doRun() /home/ubuntu/workspace/zoneapi/vendor/phpunit/phpunit/src/TextUI/Command.php:149 
    0.4090 6694592 5. PHPUnit_Framework_TestSuite->run() /home/ubuntu/workspace/zoneapi/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:440 
    0.4095 6710712 6. PHPUnit_Framework_TestSuite->run() /home/ubuntu/workspace/zoneapi/vendor/phpunit/phpunit/src/Framework/TestSuite.php:747 
    0.4227 6714992 7. PHPUnit_Framework_TestCase->run() /home/ubuntu/workspace/zoneapi/vendor/phpunit/phpunit/src/Framework/TestSuite.php:747 
    0.4228 6716632 8. PHPUnit_Framework_TestResult->run() /home/ubuntu/workspace/zoneapi/vendor/phpunit/phpunit/src/Framework/TestCase.php:724 
    0.4245 6784448 9. PHPUnit_Framework_TestCase->runBare() /home/ubuntu/workspace/zoneapi/vendor/phpunit/phpunit/src/Framework/TestResult.php:612 
    0.6029 14322288 10. PHPUnit_Framework_TestCase->runTest() /home/ubuntu/workspace/zoneapi/vendor/phpunit/phpunit/src/Framework/TestCase.php:768 
    0.6030 14323048 11. ReflectionMethod->invokeArgs() /home/ubuntu/workspace/zoneapi/vendor/phpunit/phpunit/src/Framework/TestCase.php:909 
    0.6030 14323128 12. SignupTest->testSignup() /home/ubuntu/workspace/zoneapi/vendor/phpunit/phpunit/src/Framework/TestCase.php:909 

Laravel test documentation

回答

1

嘗試使用:

->seeJsonEquals(['token' => 'yourvalue']); 
+0

但我想測試是真實的任何值。如果*值爲 –

+0

可以發佈完整的輸出: 'seeJsonStructure(['token'])' ? –

+1

@LucienDubois你確定你使用最新的laravel版本嗎?檢查你的'MakesHttpRequests.php'和[原創](https://github.com/laravel/framework/blob/5.2/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php#L252) –

相關問題