我正在使用 phpunit 测试 laravel 5.4 中的一个类,该类使用会话来获取数据。在应用程序运行时直接访问会话数据时,检索会话数据有效,即“会话('消费者')”返回一个值,但是当我尝试测试使用会话的函数时,出现以下错误:
ReflectionException: 类会话不存在
有人可以说明如何在测试期间完成设置会话数据。
我试过使用:
$this->session()->put([$array_value]) 但收到错误“class_im_testing 上不存在课堂会话”
在此先感谢您的帮助!
public function test_get_user()
{
$mockUser = [
'id' => 'cf442564-d076-4198-beb5-edef5aa51a69',
'name' => 'John Doe',
'fname' => 'John',
'lname' => 'Doe',
];
session->put('consumer', [
'id' => 'cf442564-d076-4198-beb5-edef5aa51a69',
'name' => 'John Doe',
'fname' => 'John',
'lname' => 'Doe',
]);
$user = $this->repo->getUser();
$this->assertEqual($user, $mockUser);
}
Run Code Online (Sandbox Code Playgroud)
public function getUser()
{
$user = new User(session('consumer'));
return $user;
}
Run Code Online (Sandbox Code Playgroud) 如何检查此会话是否为空,此处为示例
@elseif {{Session::get('package_id')}}=null
@include('index.customer.customerpackage')
Run Code Online (Sandbox Code Playgroud)
以及如何检查{{Session :: get('package_id')}} = 1然后Free else Paid
在 Laravel 中,有什么方法可以停止同时与同一条记录交互。例如,如果用户 A 正在编辑一条记录,那么我同时需要阻止用户 B 编辑同一条记录。
注意:我使用的是 SESSION_DRIVER=file & Laravel 5.2
目前大约有 500 多名用户使用该系统,它是一种管理面板,管理员可以在其中与记录交互,但我需要停止并发访问。最佳解决方案是什么?
我在用户和钱包模型之间有一个多对多的关系:
Wallet.php:
public function users()
{
return $this->belongsToMany(User::class,'user_wallet','wallet_id','user_id')->withPivot('balance');
}
Run Code Online (Sandbox Code Playgroud)
User.php:
public function wallets()
{
return $this->belongsToMany(Wallet::class,'user_wallet','user_id','wallet_id')->withPivot('balance');
}
Run Code Online (Sandbox Code Playgroud)
数据透视表user_wallet是这样的:
然后在控制器,我需要访问该balance字段:
public function chargeWallet(Request $request, $wallet, $user)
{
// $wallet is wallet_id (2) & $user is user_id (373)
$bal = Wallet::with("users")
->whereHas('users', function ($query) use ($user) {
$query->where('id',$user);
})->where('id', $wallet)->first();
dd($bal->balance);
}
Run Code Online (Sandbox Code Playgroud)
但现在我得到null了结果dd($bal->balance)!!
那么这里有什么问题呢?我怎样才能正确地得到balance?