作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在为我的搜索方法编写测试,但目前有一个 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->user
是 User
的一个实例,所以它们不匹配。
如果你想断言给定的用户包含在传递给 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/
我正在为我的搜索方法编写测试,但目前有一个 assertSee 并且想将其更改为 assertViewHas 以获得更好的测试结果。但是我从搜索方法中获得的数据与我期望的数据不匹配。 这是我设置$us
我是一名优秀的程序员,十分优秀!