Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Phpunit 使用专用生成函数创建模拟对象失败_Phpunit_Mockery - Fatal编程技术网

Phpunit 使用专用生成函数创建模拟对象失败

Phpunit 使用专用生成函数创建模拟对象失败,phpunit,mockery,Phpunit,Mockery,我正在使用PHPUnit自动测试我的应用程序,到目前为止它运行良好。但现在我有一个问题: 我有一些测试,比如说50次。在所有这些测试中,我都想使用mockery,因为我每次都需要相同的对象,所以我尝试将mock对象的创建重构为一个私有函数,并在每个测试中调用它。但是我不能让它工作。 我的私有构建函数如下所示: private function createMyMocks() { $person = $this->getMockBuilder(Person::class)->get

我正在使用PHPUnit自动测试我的应用程序,到目前为止它运行良好。但现在我有一个问题:
我有一些测试,比如说50次。在所有这些测试中,我都想使用mockery,因为我每次都需要相同的对象,所以我尝试将mock对象的创建重构为一个私有函数,并在每个测试中调用它。但是我不能让它工作。
我的私有构建函数如下所示:

private function createMyMocks() {
  $person = $this->getMockBuilder(Person::class)->getMock();

  $car = $this->getMockBuilder(Car::class)
    ->setMethods(['getDriver'])
    ->getMock();
  $car->expects($this->once())
    ->setMethod('getDriver')
    ->willReturn($person);

  return $car;
}

所有这些测试是在同一个文件中还是有不同的文件?你能不能至少包含一个调用这个函数的测试?你已经用这个问题做了标记,但是看起来你在使用PHPUnit的模拟功能。你打算用哪一种?使用mockry,您可以执行如下操作:
$car=\mockry::mock(car::class)$car->shouldReceive('getDriver')->andReturn($person)