php - 在 Laravel 中测试时获取作为用户的 ID

标签 php laravel testing

Laravel 5.7。我有这样的测试:

/** @test */
public function do_nothing_test()
{
    $user = factory(User::class)->states('app')->make();
    $this->actingAs($user, 'api');
    $response = $this->postJson('some_endpoint', ['foobar' => 3]);
    $this->assertEquals(1, Foobar::count());
}

它调用 Controller 中的一个端点来尝试获取登录用户:

public function update_foobar($request)
{
    $userId = auth()->user()->id;
    Foobar::create(['userId' => $userId, 'foobar' => $request->foobar]);
}

$id 的值为null。我怎样才能让测试工作,以便 Controller 可以使用用户的详细信息?

最佳答案

$user = factory(User::class)->states('app')->make();

make() 不会保存到数据库中,因此它们没有 ID。我想你是说 create()

关于php - 在 Laravel 中测试时获取作为用户的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54906538/

相关文章:

php - 错误 : No available formula for php54-mcrypt on Mac OS X Mavericks

javascript - 选择 ajax 发送额外参数

php - 如何在 Laravel 查询中使用多个 OR、AND 条件

laravel - 在 Laravel 中手动发送密码重置链接

jQuery 选择 : display multiple select fields on the same page

c# - Selenium:在初始化中获取实际测试方法的名称

testing - Perfecto Mobile 和 Mobile Labs Device Connect 有什么区别?

PHP 要求导致 HTTP 500 错误

php - 尝试在函数内插入数据库时​​出错

ruby-on-rails - 获取在 Rails 中进行测试的方法