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

Write a test mutation in Laravel 6, Lighthouse 5, and phpunit, and delete the data in the cache

在程序实现中,先请求 API,生成缓存标识。然后再请求 API,删除缓存标识。

1. In the program implementation, first request the API to generate a cache ID. Then request the API, delete the cache ID. as shown in Figure 1

在程序实现中,先请求 API,生成缓存标识。然后再请求 API,删除缓存标识。
Figure 1

2. If you want to pass in the test, the premise is that there must be a clear cache ID to delete the parameters of the request.

3. Reference URL:https://learnku.com/laravel/t/22690. Use the TDD test-driven development to build the Laravel REST API. The test deletion route is to directly manipulate the database, generate a record, and then call the HTTP API to test the deletion operation.


// 测试删除路由
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. Therefore, the decision is also designed in this way. First operate the cache directly, generate the corresponding cache ID, and then perform the HTTP API request test.



    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. Run the test and pass the test. as shown in Figure 2

运行测试,测试通过
Figure 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)


需要长期技术维护或远程问题排查?

我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。

如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:

  • ✅ PHP / Laravel / Yii2 老项目无人维护
  • ✅ Go / Gin 后端接口需要排查或优化
  • ✅ WordPress 网站访问慢、报错或插件冲突
  • ✅ Nginx / MySQL / Redis / Linux 服务器异常
  • ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
  • ✅ 需要长期远程技术支持或兼职维护

更多介绍请查看:关于我 & 合作

微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan

评论

发表回复

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

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