Laravel phpunit assertViewHas与预期的测试数据不匹配
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Laravel phpunit assertViewHas与预期的测试数据不匹配,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1237字,纯文字阅读大概需要2分钟。
内容图文
![Laravel phpunit assertViewHas与预期的测试数据不匹配](/upload/InfoBanner/zyjiaocheng/668/d2f598735c734b538ce8a844724bf291.jpg)
我正在为我的搜索方法编写一个测试,但是当前有一个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);
这是它将从控制器返回的数据:
$result = User::where('username', 'LIKE', '%'. $request->get('search') .'%')
->orderBy('username', 'asc')->paginate(20);
return view('manage.users')->with('users', $result);
获取匹配数据我在做错什么?
解决方法:
您试图断言$this-> user与控制器中的$users相匹配.但是paginate()返回一个LengthAwarePaginator实例,而$this-> user是User的实例,因此它们将不匹配.
如果要断言给定用户包含在传递给视图的$users变量中,则可以使用必要的逻辑将闭包传递给assertViewHas().
也许是这样的:
$response->assertViewHas('users', function($users) {
return $users->contains($this->user);
});
您可以查看assertViewHas()如何在Laravel source code上工作.
内容总结
以上是互联网集市为您收集整理的Laravel phpunit assertViewHas与预期的测试数据不匹配全部内容,希望文章能够帮你解决Laravel phpunit assertViewHas与预期的测试数据不匹配所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。