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

时间:2017-12-19 13:06:04

标签: php laravel-5 phpunit laravel-5.5 mockery

我正在学习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中搜索时,我在{{3}中找到了该方法TestResponse命名空间中的Illuminate/Foundation/Testing类中的方法。 我怎么解决这个问题。

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

assertViewHas

我找不到我的测试中使用array_merge()的位置

1 个答案:

答案 0 :(得分:2)

而不是:

$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