在我的测试中不能使用assertViewHas方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在我的测试中不能使用assertViewHas方法相关的知识,希望对你有一定的参考价值。

我正在学习Laravel测试,我希望使用Laravel Framework Assertions

public function __construct()
{
    $this->mock = Mockery::mock("Eloquent", "Post");
}

public function testIndex()
{
    $this->mock
       ->shouldReceive('all')
       ->once()
       ->andReturn('foo');

    $this->app->instance('Post', $this->mock);
    $this->call('GET', 'posts');
    $this->assertViewHas('posts'); // This method seem can't be find 
}

似乎assertViewHas方法不存在,因为我的IDE无法自动完成该方法它无法找到它,但是当我在Laravel 5.5 API中搜索时,我在assertViewHas类中的TestResponse类中的Illuminate/Foundation/Testing方法中找到该方法。我怎么解决这个问题。

另一个问题是,在这个测试中,我使用嘲弄来模拟我的Post模型,但是当我在我的终端上运行vendorinphpunitin时出现了一些错误。

PHP unit Error

我没有找到array_merge()在我的测试中使用的位置

答案

代替:

$this->call('GET', 'posts');
$this->assertViewHas('posts'); // This method seem can't be find 

你应该使用

$response = $this->call('GET', 'posts');
$response->assertViewHas('posts');

Laravel 5.4中更改了运行测试的默认方式。有关详细信息,请参阅Upgrade guide - Testing section

以上是关于在我的测试中不能使用assertViewHas方法的主要内容,如果未能解决你的问题,请参考以下文章

不能在我的mocha测试中使用需求通过gulp与karma runner

如何在 Laravel PHPUnit 测试中获取响应变量?

如何测试登录过程?

使用 KIF 进行功能测试:在我的视图控制器加载后调用 beforeEach?

Laravel Mockery 集成测试

为啥 setState() 在我的情况下不能在 React 中工作?