我想用有效的格式测试我的端点。例如,我有/api/token
(POST),它将返回api令牌。
在我的情况下,此端点将返回"令牌"字符串和"消息"领域。因此,我想检查这两个字段是否存在有效格式。目前我正在使用Laravel Validator。
示例json输出:
{
"message": "login successful",
"token": "d4zmendnd69u6h..."
}
测试类(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.
答案 0 :(得分:1)
如果确实存在任何验证错误,您似乎没有在终端中显示任何内容,如果验证程序失败,您可以在终端中执行var_dump
,如下所示:
if ($validator->fails()) {
var_dump($validator->errors()->all());
$this->assertTrue(false);
}
else {
$this->assertTrue(true);
}