在 Laravel 4.2 中使用控制器的 Mockery (dev-master) 进行 PHPUnit 测试时收到以下错误:
致命错误:在第 129 行的 \laravel\vendor\mockery\mockery\library\Mockery.php 中的非对象上调用成员函数 fetchMock()
控制器和测试如下:
class UserControllerTest extends TestCase {
public function __construct() {
$this->mock = Mockery::mock('Eloquent', 'User');
}
function tearDown() {
Mockery::close();
}
public function testIndex() {
$this->mock
->shouldReceive('all')
->once()
->andReturn('foo');
$this->app->instance('User', $this->mock);
$response = $this->action('GET', 'UserController@index');
//other stuff
}
}
class UserController extends \BaseController {
protected $user;
public function __construct(User $user) {
$this->user = $user;
}
public function index() {
$users = $this->user->all();
return View::make('users.index', ['users' => $users]);
}
//other stuff
}
这个测试在没有 Mockery 的情况下工作正常(即没有执行$this->app->instance('User', $this->mock);
)
执行时在fetchMock函数
内部引发错误return self::$_container->fetchMock($name);
以下是 fetchMock 失败时在调试器中可见的值:
是什么导致了这个错误?