首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉威尔5.2 PHPUnit assertViewHasAll()失败

拉威尔5.2 PHPUnit assertViewHasAll()失败
EN

Stack Overflow用户
提问于 2016-10-19 18:20:51
回答 2查看 966关注 0票数 0

嗨,我有这个单元测试

代码语言:javascript
复制
public function test_index_coupon(){

    $coupons = factory(App\Models\Coupon::class, 5)->create();      

    $this->visit('/admin/coupons')
    ->assertResponseOk()
    ->assertViewHasAll('coupons');
}

这是我列出优惠券索引的控制器

代码语言:javascript
复制
   public function index()
    {
        $coupons = Coupon::all();   
        return view('backend.admin.coupons.index', compact('coupons'));
    }

我可以成功地列出优惠券

代码语言:javascript
复制
@foreach($coupons as $coupon)
.....
@endforeach

在我看来,我是通过浏览器来检查的。

但是当我运行phpunit时,我会得到这个错误

代码语言:javascript
复制
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');,得到不同的错误。

代码语言:javascript
复制
1) CouponsTest::test_index_coupon
Failed asserting that an array has the key 'coupons'.

我的测试代码出什么问题了?我只想看看访问admin/coupons优惠券列表是否正确加载。因此,我可以确保$coupons是否存在。

更新

它适用于assertViewHas('coupons')不知道为什么,可能是我的整个测试代码出了问题,或者是因为use WithoutMiddleware

谢谢你的回答和评论。

EN

回答 2

Stack Overflow用户

发布于 2016-10-19 18:30:48

代码语言:javascript
复制
$this->visit('/admin/coupons')
    ->assertResponseOk()
    ->assertViewHas('coupons', $coupons);

或者(如果您计划在assertViewHasAll中添加更多要断言的数据)

代码语言:javascript
复制
$this->visit('/admin/coupons')
    ->assertResponseOk()
    ->assertViewHasAll(['coupons' => $coupons]);
票数 1
EN

Stack Overflow用户

发布于 2016-10-19 18:31:03

Laravel文件中,您可以看到assertViewHasAll接收一个数组作为参数。

->assertViewHasAll(array $bindings);

你给了它一根绳子:

->assertViewHasAll('coupons');

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40138855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档