gpt4 book ai didi

php - Laravel phpunit assertViewHas 与预期的测试数据不匹配

转载 作者:可可西里 更新时间:2023-11-01 01:13:11 25 4
gpt4 key购买 nike

我正在为我的搜索方法编写测试,但目前有一个 assertSee 并且想将其更改为 assertViewHas 以获得更好的测试结果。但是我从搜索方法中获得的数据与我期望的数据不匹配。

这是我设置$user的地方:

protected $user;

public function setUp()
{
parent::setUp();

$this->seed();

$this->user = factory(User::class)->create(['role_id' => 3]);
}

这是我做出断言的地方:

$response = $this->followingRedirects()->actingAs($this->user)->get('/manage/users/search?choices=username&search='.$this->user->username.'');

$response->assertViewIs('manage.users');
$response->assertSuccessful();
$response->assertViewHas('users', $this->user);

这是它将从 Controller 返回的数据:

$result = User::where('username', 'LIKE', '%'. $request->get('search') .'%')
->orderBy('username', 'asc')->paginate(20);
return view('manage.users')->with('users', $result);

获取匹配数据我做错了什么?

最佳答案

您正在尝试从您的 Controller 中断言 $this->user$users 匹配。但是 paginate() 返回一个 LengthAwarePaginator 实例,而 $this->userUser 的一个实例,所以它们不匹配。

如果你想断言给定的用户包含在传递给 View 的 $users 变量中,你可以传递一个闭包给 assertViewHas()逻辑。

也许是这样的:

$response->assertViewHas('users', function($users) {
return $users->contains($this->user);
});

您可以查看 assertViewHas() 如何处理 Laravel source code .

关于php - Laravel phpunit assertViewHas 与预期的测试数据不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47576072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com