php - 运行测试时 Laravel RefreshDatabase 不起作用
问题描述
我创建了一个功能测试 api。
CategoryApiTest.php
namespace Tests\Feature;
use App\Models\Category;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Http\JsonResponse;
use Tests\TestCase;
class CategoryApiTest extends TestCase
{
use RefreshDatabase;
protected $faker;
public function setUp(): void
{
parent::setUp(); // TODO: Change the autogenerated stub
$this->user = $this->faker = Category::factory()
->create([
'name' => 'Food',
'description' => 'This is the food category',
'menu' => true,
'image' => 'IMG_4985',
'parent_id' => '1'
]);
}
...
public function testUpdateCategory()
{
$response = $this->putJson('/api/categories/1', [
'name' => 'Water Update',
'description' => 'This is the water category update',
'menu' => true,
'image' => 'IMG_56898',
'parent_id' => '1'
]);
$response->assertStatus(JsonResponse::HTTP_OK)
->assertJsonFragment([
'name' => 'Water Update',
'slug' => 'water-update',
'parent_id' => 1
]);
}
...
}
这种情况总是返回失败,因为找不到带有 的类别id = 1
。
我检查了列表类别,我看到:
我创建了文件.env.testing
和数据库测试,但我认为phpunit.xml
不使用文件.env.testing
所以RefreshDatabase
不起作用。
数据测试没有refresh
。有问题,请帮我解决。
解决方案
推荐阅读
- java - springboot logback:java.lang.ClassNotFoundException:org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout
- javascript - 使用新插入的内容滚动到 div 的底部
- linux - 创建 Lightsail 实例并安装 CodeDeploy 代理
- vue.js - 更改 element-ui Select 中的图标
- python - 为什么我的石头剪刀布游戏不启动while循环?
- jenkins - 如何在詹金斯中获得并行构建作业结果
- python - 美丽的汤没有找到基本的 HTML 数据
- node.js - Package.json 有一个实际上不存在的 Package 版本。怎么了?
- reactjs - 如何避免反应日期选择器日历在上一个文本框中的选项卡按键上打开
- django - 如何在 Django 中使用带问号的 URL 执行查询?