0
我想用有效格式測試我的端點。例如,我有/api/token
(POST),它將返回api標記。Laravel測試 - 如何驗證JSON響應中的每個字段
在我的情況下,此端點將返回「標記」字符串和「消息」字段。因此,我想檢查這兩個字段是否存在有效格式。目前我正在使用Laravel Validator。
例JSON輸出:
{
"message": "login successful",
"token": "d4zmendnd69u6h..."
}
Test類(ApiTokenTest.php)。
class ApiTokenTest extends TestCase
{
protected $validFormBody = [
'os_type' => 'android',
'device_id' => '0000-AAAA-CCCC-XXXX',
'os_version' => '5.1',
'apps_version' => '1.0',
];
public function testSucessResponseFormat()
{
$response = $this->json('post', '/api/token', $this->validFormBody);
$validator = Validator::make(json_decode($response->getContent(), true), [
'token' => 'required|size:100', // token length should be 100 chars
'message' => 'required',
]);
if ($validator->fails()) {
$this->assertTrue(false);
}
else {
$this->assertTrue(true);
}
}
}
這裏的問題是失敗的消息是不是真的有幫助,特別是如果我有超過1個字段的格式無效,應我斷言一個接一個? (見失敗案例下的phpunit
輸出)。我應該使用什麼來驗證每個字段的格式? 在此先感謝。
There was 1 failure:
1) Tests\Feature\ApiTokenTest::testSucessResponseFormat
Failed asserting that false is true.
感謝您的想法。我用'fwrite(STDERR,print_r($ validator-> errors() - > all(),true));'來正確顯示輸出 – xmhafiz