【发布时间】:2016-01-28 02:28:29
【问题描述】:
我有一个类,我正在尝试测试其中一种方法,但其中一种方法调用了同一个类的静态方法。我想知道如何在没有静态方法的情况下测试第一个方法并存根,以便我只测试第一个?
这里以一个愚蠢的类为例。
class MyEloquentModel extends Model
{
// Returns input concatenated with output of bar for that input
public function foo($input) {
$bar = MyEloquentModel::bar($input);
return $input." ".$bar;
}
// Returns world if input received is hello
public static function bar($input) {
if ($input == "hello") {
return "world";
}
}
}
这是我尝试过的测试:
class MyEloquentModelTest extends TestCase
{
public function test_foo_method_returns_correct_value()
{
// Mock class
$mock = \Mockery::mock('App\MyEloquentModel');
$mock->shouldReceive('hello')
->once()
->with()
->andReturn('world');
// Create object
$my_eloquent_model = new MyEloquentModel;
$this->assertTrue($my_eloquent_model->foo('hello') == "hello world");
}
}
目前,测试返回“无法加载模拟 App\MyEloquentModel,类已存在”
【问题讨论】:
标签: phpunit laravel-5.1 mockery