我正在使用 Symfony 4.4 和api-platform/api-pack v1.2.1我創建了一個支持帶前綴的字符串的自定義選民PERM_我將端點 ( /api/roles) 設置為security: 'is_granted("PERM_READ_USER")'我創建了一個如下所示的測試: /** * @depends testLoginRegularUser * @param $token * @return string JWT Token */ public function testRegularUserReadRole($token) { $this->expectException(AccessDeniedHttpException::class); $this->expectExceptionCode(403); $response = static ::createClient()->request('GET', '/api/roles',[ 'json' => [ 'page' => 1 ], 'headers' => [ 'Authorization' => 'Bearer ' . $token, ] ]); return $token; }而且我總是收到錯誤消息:Testing App\Tests\Functional\GroupRoleTest.2020-01-06T00:49:48+00:00 [error] Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException: "Access Denied." at /home/vagrant/Code/wikaunting/vendor/symfony/security-http/Firewall/ExceptionListener.php line 137FS 3 / 3 (100%)Time: 14.27 seconds, Memory: 44.50 MBThere was 1 failure:1) App\Tests\Functional\GroupRoleTest::testRegularUserReadRoleFailed asserting that exception of type "Symfony\Component\HttpClient\Exception\AccessDeniedHttpException" is thrown.當我使用休息客戶端(失眠癥)進行測試時,它返回
2 回答

翻翻過去那場雪
TA貢獻2065條經驗 獲得超14個贊
您將功能與單元測試混合在一起。 $this->expectException
用于單元測試,當您的代碼拋出異常時。
在這種情況下,您正在向客戶端發出 HTTP 請求,該請求將返回響應并且不會引發異常。您應該檢查響應狀態代碼是否為 403。

暮色呼如
TA貢獻1853條經驗 獲得超9個贊
請記住,該異常不會在您的測試中引發。當您的請求被拒絕時,它會被拋出“服務器端”。因此,您不應斷言拋出異常,而應在測試中檢查該請求的狀態碼和響應。API 平臺為此提供了輔助方法。
查看:
self::assertResponseStatusCodeSame
self::assertJsonContains
- 2 回答
- 0 關注
- 131 瀏覽
添加回答
舉報
0/150
提交
取消