无法在我的测试中使用 assertViewHas 方法

Can't use assertViewHas method in my test

我正在学习 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 我在 Illuminate/Foundation/Testing 命名空间的 TestResponse class 的 assertViewHas 方法中找到了那个方法。 我怎么解决这个问题。

另一个问题是,在这个测试中我使用模拟来模拟我的 Post 模型,但是当我在我的终端中 运行 vendor\bin\phpunit 时出现一些错误。

我没有找到在我的测试中使用 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