我正在尝试开始使用 laravel 进行单元测试,并尝试遵循一些教程。
我的很多控制器都是使用 Jeffrey Ways 优秀的生成器生成的,它们似乎创建了自己的测试,所以我认为入门很简单。
我已经安装了 mockery 和 sqlite - 我现在已经从文件夹中删除了很多测试,所以我可以一次测试一个,但是我在第一个测试创建时遇到了问题:
这是我的测试:
<?php
use Mockery as m;
use Way\Tests\Factory;
class BooksTest extends TestCase {
public function __construct()
{
$this->mock = m::mock('Eloquent', 'Book');
$this->collection = m::mock('Illuminate\Database\Eloquent\Collection')->shouldDeferMissing();
}
public function setUp()
{
parent::setUp();
$this->attributes = Factory::book(['id' => 1]);
$this->app->instance('Book', $this->mock);
}
public function tearDown()
{
m::close();
}
public function testIndex()
{
$this->mock->shouldReceive('all')->once()->andReturn($this->collection);
$this->call('GET', 'books');
$this->assertViewHas('books');
}
public function testCreate()
{
$this->call('GET', 'books/create');
$this->assertResponseOk();
}
public function testStore()
{
$this->mock->shouldReceive('create')->once();
$this->validate(true);
$this->call('POST', 'books');
$this->assertRedirectedToRoute('books.index');
}
}
当我运行 phpunit 时,我收到很多关于嘲笑的 php 消息 - 那里有很多我看不到特定的错误消息
我的设置中是否缺少一个简单的步骤?
我在 composer.json 中添加了嘲讽并进行了更新。我没有在配置文件中向 app.php 添加任何内容 - 包没有建议我应该或作为门面。
所以我不确定,在是否正确安装了嘲弄之前从未使用过它——尽管我认为它是正确的。我是否有必要在 laravel 安装中添加嘲弄,或者它是正常安装的一部分?