laravel-5 - 如果 Laravel phpunit 测试失败,则打印自定义消息
问题描述
我正在使用 Laravel,我的代码就是这样
$this->actingAs($user)
->json('post', '/graphql/admin', ['query' => $query])
->assertStatus(200)
->assertJsonStructure($expected);
$query
如果此测试失败,我想打印变量。
我的理想是在代码末尾添加如下内容:
if ($this->isFail()) {
echo $query;
}
解决方案
在文件中TestCase.php
添加这个函数
// tests/TestCase.php
public function assertJsonStructure(
string $url,
array $params,
array $expected
) {
$response = $this->json('post', $url, $params);
try {
$response->assertStatus(200)->assertJsonStructure($expected);
} catch (\Exception $ex) {
$this->printDie($params, $expected, $ex, $response);
}
}
而这个功能:
// tests/TestCase.php
private function printDie($params, $expected, \Exception $ex, $response, $user_id = null)
{
$content = substr($response->getContent(), 0, 1500);
$trace = debug_backtrace();
$error = [
'class' => static::class.'::'.$trace[2]['function'],
'params' => $params,
'expected' => $expected,
'user' => $user_id,
'error' => $ex->toString(),
'content' => $content,
];
dd($error);
}
现在,您可以测试您的查询:
$this->assertJsonStructure(
'/graphql',
[
'query' => $query,
],
$expected
);
而且,如果失败,它会打印错误信息,并且更容易调试。你可以在这里看到预览
推荐阅读
- php - [Route: utente.show] [URI: registrazione/{utente}] 缺少必需的参数
- python - Python - 导入和文件夹结构
- sql-server - SQL server 实例随机挂起
- selenium - 在作业 gitlab-ci 中使用多个依赖项
- swift - 缺少 SCNText 的 textSize 属性
- graphviz - Graphviz - 叶节点的垂直顺序
- python - Keras:如何获得top-k准确率
- autodesk-forge - 伪造脚本“test-list-resources”仅列出 10 个项目
- networking - 逐位或同时传输多个位
- android - 在 Google Play 商店更新 Android 应用程序时文件夹会被删除吗?