分类: Lighthouse
-
编写 Lighthouse 5 自动化测试用例时,PhpStorm 无法自动完成且找不到 assertJson 声明。经排查,$response 对象实际路径显示为 \Illuminate\Foundation\Testing\TestResponse,而正常项目应为 \Illuminate\Testing\TestResponse。确定问题由 Laravel Framework 6.20.44 与 nuwave/lighthouse v5.36.0 版本不匹配导致。执行 Composer 命令将 nuwave/lighthouse 回退至 v4.10.2 后,代码提示恢复正常。
-
在编写 Lighthouse 5 自动化测试用例时,将单个测试方法拆分为两个后运行报错,提示 Call to undefined method Illuminate\Support\Facades\Config::set()。排查发现第二个方法中应用实例已不复存在。参考 PHPUnit 文档后,在 phpunit.xml 中设置 processIsolation 为 true,或者在运行测试时添加 –process-isolation 选项,即可实现进程隔离并解决该问题,使测试通过。
-
在运行 Lighthouse 测试用例时,遇到 Class ‘Overtrue\LaravelVersionable\ServiceProvider’ not found 错误。检查发现 vendor 目录未安装该包,但 bootstrap/cache/packages.phpunit.php 缓存文件中仍有其声明。分析原因是之前进行了 Git 本地重置导致缓存不一致,且缓存不应纳入 Git。最终手动删除 bootstrap/cache 目录下的缓存文件,再次运行测试后通过。
-
编写 Lighthouse 5 的自动化测试用例时,针对运行 GraphQL Query API 返回 200 的场景,重点测试 themeAssets 字段的响应。由于字段值无法预测且不准备插入新记录,因此仅验证字段是否存在。通过基于 $response->assertJsonStructure 断言响应具有给定的 JSON 结构来达成目的,最终运行测试并通过。
-
本文记录了在编写 Lighthouse 5 自动化测试用例时遇到的断言失败问题。在使用 PHPUnit 进行 GraphQL 查询测试时,出现了 Syntax Error 及 Failed asserting that an array has the subset Array 的报错。经过排查,发现根源在于响应数据结构中多了一层花括号导致数据无法匹配。通过调整断言逻辑匹配数组的最后一个键值并修正查询结构,最终解决了测试不通过的问题。
-
针对 Laravel 6 中数据库字段下划线命名与 GraphQL 接口响应驼峰命名不一致的问题,文章探讨了两种转换方案。对比了遍历数组重构与在 Select 查询语句中直接重命名字段两种思路,最终决定采纳在 SQL 查询中重命名的方案。经测试,接口响应字段成功转换为驼峰形式,符合预期。
-
针对在 Lighthouse 4.10.1 中添加新的 Query type 后无效果的问题,通过查阅文档确认该类型未被加载。参考 Schema caching 文档后,决定在本地环境下禁用缓存,通过修改 .env 文件设置相关变量并使用 artisan 命令清除 Schema 缓存。重载文档后发现该类型已正常显示,且后续修改能即时生效,最终确认问题由缓存机制引起,已通过禁用缓存解决。
-
本文记录了从零开始使用 Lighthouse 为简单博客构建 GraphQL API 的过程,涵盖创建 Laravel 项目、配置数据库与 Nginx 虚拟主机。文中详细介绍了安装 Lighthouse、发布默认模式、定义数据模型及 Schema,并通过 Altair GraphQL Client 进行调试。针对数据填充过程中遇到的工厂方法报错,通过引入 HasFactory 特性解决了问题,最终实现了对文章、评论及用户数据的成功查询与验证。
