【发布时间】:2014-11-01 16:20:02
【问题描述】:
我正在尝试在我的控制器中设置最简单的测试,但是与 Laravel 的大多数东西一样,没有像样的教程来演示简单的东西。
我可以像这样运行一个简单的测试(在一个名为 UserControllerTest 的文件中):
public function testIndex()
{
$this->call('GET', 'users');
$this->assertViewHas('users');
}
这会调用 /users 路由并传入数组 users。
我想对 Mockery 做同样的事情,但是怎么做呢?
如果我试试这个:
public function testIndex()
{
$this->mock->shouldReceive('users')->once();
$this->call('GET', 'users');
}
我收到一条错误消息:“此模拟对象上不存在静态方法 Mockery_0_users::all。
为什么不呢?我在嘲笑用户,它扩展了 Ardent 并反过来扩展了 Eloquent。为什么模拟的 ::all 不存在?
顺便说一句,这些是 Mockery 的设置函数:
public function setUp()
{
parent::setUp();
$this->mock = $this->mock('User');
}
public function mock($class)
{
$mock = Mockery::mock($class);
$this->app->instance($class, $mock);
return $mock;
}
【问题讨论】:
标签: unit-testing laravel mockery