Write a test mutation in Laravel 6, Lighthouse 5, and phpunit, and delete the data in the cache
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
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
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)

