php - 工厂创建的对象有错误的值
问题描述
我正在使用工厂在 laravel (phpunit) 测试方法中创建一些对象:
/** @test */
public function private_entities_only_viewable_by_creators()
{
$private_entity = Entity::factory()->raw(["public" => false, "label" => "somerandomlabel"]);
$public_entity = Entity::factory()->raw(["public" => true]);
//echo var_dump($private_entity);
$current_user = User::factory()->create();
$this->withoutExceptionHandling();
$this->followingRedirects();
$this->actingAs($current_user)
->post('/entities', $private_entity)
->assertSee($private_entity['label']);
$other_user = User::factory()->create();
$this->actingAs($other_user)
->get('/entities')->assertDontSee($private_entity['label']);
}
}
我试图确保用户看不到其他用户创建的私有实体。上面使用了以下两个控制器:
public function index(){
$public_entities = Entity::where('public', true)->get()->toArray();
$all_entities = Entity::all()->toArray();
echo var_dump($all_entities); // I expect at least one of these entities to have false for public
$private_entities = Entity::where('public', false)->where('user_id', Auth::id())->get()->toArray();
//echo var_dump($private_entities);
//echo var_dump($public_entities);
$users = User::all()->toArray();
$entity_user_list = array_map(array($this, 'map_user'), array_merge($public_entities, $private_entities));
return view('entities.index', ['entity_users' => $entity_user_list, 'entities' => $private_entities]);
}
public function create(Request $request)
{
$data = request()->validate([
'label' => 'required'
]);
Entity::create([
'label' => $request['label'],
'user_id' => Auth::id()
]);
return redirect('/entities');
}
$all_entities
我在index
控制器中呼应了 的值。通过工厂创建了一个public
设置为false
并label
设置为的实体somerandomlabel
后,我希望该实体使用这些值保存在数据库中。但我$private_entities
的出现是空的。index
控制器记录以下内容:
array(1) {
[0]=>
array(6) {
["id"]=>
int(2)
["created_at"]=>
string(27) "2021-02-05T13:30:45.000000Z"
["updated_at"]=>
string(27) "2021-02-05T13:30:45.000000Z"
["label"]=>
string(15) "somerandomlabel"
["public"]=>
bool(true)
["user_id"]=>
int(20)
}
}
为什么会public
设置在true
这里?我在工厂创建中将该值指定为 false。
解决方案
推荐阅读
- html - 如何更改我的 VS 报告布局,以便当它在我的网站中呈现时居中并填满屏幕?
- r - lm.wfit 之后如何预测新数据?
- c++ - QVBoxLayout 行大小
- excel - 加入 2 个表(没有 Power Query - Macbook,索引/匹配太慢) - 潜在的 VBA 选项?
- java - Android - 检查集合是否为空和/或 Firebase 中不存在
- rabbitmq - 想要发布到远程机器上的消息队列
- docker - 如何将本地文件系统复制到 Docker 容器中
- python - 尝试使用 pip 安装 pyliblo 会导致错误 D8021 invalid numeric argument '/Werror-implicit-function-declaration'
- regex - Nginx 重写规则从请求的 url 重定向到特定的 url
- angular7 - 在 ag-grid 中显示图像