没有不值得去解决的问题,也没有不值得去学习的技术!

在 Laravel 6、LightHouse 5、PHPUnit 中编写测试 Mutation,删除缓存中的数据实现

在程序实现中,先请求 API,生成缓存标识。然后再请求 API,删除缓存标识。
1、在程序实现中,先请求 API,生成缓存标识。然后再请求 API,删除缓存标识。如图1
在程序实现中,先请求 API,生成缓存标识。然后再请求 API,删除缓存标识。
图1
2、如果要在测试中通过,前提是必须存在一个明确的缓存标识,以用于删除请求的参数。 3、参考网址:https://learnku.com/laravel/t/22690 。使用 TDD 测试驱动开发来构建 Laravel REST API。测试删除路由,其是先直接操作数据库,生成一条记录,然后再调用 HTTP API,测试删除操作。


// 测试删除路由
public function testDelete(){
    $token = $this->authenticate();
    $recipe = Recipe::create([
        'title' => 'Jollof Rice',
        'procedure' => 'Parboil rice, get pepper and mix, and some spice and serve!'
    ]);
    $this->user->recipes()->save($recipe);
    $response = $this->withHeaders([
        'Authorization' => 'Bearer '. $token,
    ])->json('POST',route('recipe.delete',['recipe' => $recipe->id]));
    $response->assertStatus(200);
    // 断言没有食谱
    $this->assertEquals(0,$this->user->recipes()->count());
}



4、因此,决定也如此设计。先直接操作缓存,生成对应的缓存标识,然后再执行 HTTP API 请求测试。



    public function testDeleteThemeEditorCode(): void
    {
        $random = Str::random(36);
        $value = [
            'theme_id' => 'vogue'
        ];
        Cache::tags([ThemeEditorResolver::TAG_THEME_EDITOR, ThemeEditorResolver::TAG_THEME_EDITOR_CODE])->put($random, $value, 86400);

        $response = $this->graphQL('
            mutation DeleteThemeEditorCode($themeEditorCode: String!) {
                onlineStoreThemeEditorCodeDelete(themeEditorCode: $themeEditorCode) {
                    deletedThemeEditorCode
                }
            }
        ', [
            'themeEditorCode' => $random,
        ]);

        $response->assertJson(
            [
                'data' => [
                    'onlineStoreThemeEditorCodeDelete' => [
                        'deletedThemeEditorCode' => $random
                    ],
                ],
            ]
        );
    }



5、运行测试,测试通过。如图2
运行测试,测试通过
图2


PS E:\wwwroot\object> .\vendor\bin\phpunit .\Modules\ThemeStore\Tests\Functional\GraphQl\ThemeEditorGraphQlApiTest.php
PHPUnit 7.5.20 by Sebastian Bergmann and contributors.

..                                                                  2 / 2 (100%)

Time: 1.31 seconds, Memory: 72.00 MB

OK (2 tests, 4 assertions)


PHP / Laravel / Yii2 老项目维护与长期技术支持

如果你的 PHP / Laravel / Yii2 项目已经上线,但遇到原开发离职、Bug 长期无人修复、接口不稳定、性能下降、代码难以接手等问题,可以联系我做一次远程技术排查。

适合以下情况:
✅ 老旧 PHP 系统无人维护
✅ Laravel / Yii2 项目 Bug 修复
✅ 后台管理系统小功能迭代
✅ RESTful API 接口排查
✅ MySQL / Redis / Nginx 性能问题
✅ 长期远程兼职维护

可先从一次小问题开始:
✅ 线上报错排查
✅ 接口异常分析
✅ 慢查询与性能瓶颈定位
✅ 代码结构初步评估
✅ 部署环境与日志检查

如需咨询,请联系我,并注明:PHP 维护咨询

联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理