我正在学习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
时会出现一些错误。
我找不到我的测试中使用array_merge()
的位置
答案 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。