嗨,我有这个单元测试
public function test_index_coupon(){
$coupons = factory(App\Models\Coupon::class, 5)->create();
$this->visit('/admin/coupons')
->assertResponseOk()
->assertViewHasAll('coupons');
}这是我列出优惠券索引的控制器
public function index()
{
$coupons = Coupon::all();
return view('backend.admin.coupons.index', compact('coupons'));
}我可以成功地列出优惠券
@foreach($coupons as $coupon)
.....
@endforeach在我看来,我是通过浏览器来检查的。
但是当我运行phpunit时,我会得到这个错误
1) CouponsTest::test_index_coupon
ErrorException: Argument 1 passed to Illuminate\Foundation\Testing\TestCase::assertViewHasAll() must be of the type array, string given, called in /var/www/html/rentcar/tests/admin/CouponsTest.php on line 24 and defined然后我尝试将我的测试从->assertViewHasAll('coupons');修改为->assertViewHas('coupons');,得到不同的错误。
1) CouponsTest::test_index_coupon
Failed asserting that an array has the key 'coupons'.我的测试代码出什么问题了?我只想看看访问admin/coupons优惠券列表是否正确加载。因此,我可以确保$coupons是否存在。
更新
它适用于assertViewHas('coupons')不知道为什么,可能是我的整个测试代码出了问题,或者是因为use WithoutMiddleware
谢谢你的回答和评论。
发布于 2016-10-19 18:30:48
$this->visit('/admin/coupons')
->assertResponseOk()
->assertViewHas('coupons', $coupons);或者(如果您计划在assertViewHasAll中添加更多要断言的数据)
$this->visit('/admin/coupons')
->assertResponseOk()
->assertViewHasAll(['coupons' => $coupons]);发布于 2016-10-19 18:31:03
在Laravel文件中,您可以看到assertViewHasAll接收一个数组作为参数。
->assertViewHasAll(array $bindings);
你给了它一根绳子:
->assertViewHasAll('coupons');
https://stackoverflow.com/questions/40138855
复制相似问题