Sve*_*len 5 php mockery laravel-4
我正在我的Laravel 4应用程序中实现单元测试,但我仍然坚持模拟访问器属性.
我有一个Eloquent具有Accessor属性的模型.我正在尝试模拟此模型,并在调用此访问器属性时返回一个值.但我无法找到任何解决方案来使其工作.
我超级简单的用户类.
class User extends Eloquent {
public function getFullNameAttribute() {
return $this->first_name . ' ' . $this->last_name;
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
$user_mock = m::mock('MyApp\Models\User');
$user_mock->shouldReceive('__get')->with('full_name')->andReturn('John Snow'); // doesn't work
$user_mock->shouldReceive('getAttribute')->with('full_name')->andReturn('John Snow'); // doesn't work
$user_mock->shouldReceive('getFullNameAttribute')->andReturn('John Snow'); // doesn't work
echo $user_mock->full_name; // --> " "
Run Code Online (Sandbox Code Playgroud)
我只是得到一个空的空间,表明仍在调用原始函数.
小智 -3
查看Mockery的文档,看起来它不支持mocking magic方法。您基本上只需要使用简单的赋值来设置属性:
$user_mock = m::mock('MyApp\Models\User');
$user_mock->first_name = 'John Snow';
Run Code Online (Sandbox Code Playgroud)