public function testCompareEntitiesWithData() { $mockedObject = $this->getMock('stdClass', ['getId', 'getValue']); $mockedObject->expects($this->any())->method('getId')->will($this->returnValue(1)); $mockedObject->expects($this->any())->method('getValue')->will($this->returnValue(2)); $mockedObject2 = clone $mockedObject; $mockedObject3 = clone $mockedObject; $mock = $this->getMock('stdClass', ['delete', 'update', 'add', 'get']); $mock->expects($this->once())->method('delete'); $mock->expects($this->any())->method('update'); $mock->expects($this->once())->method('add'); $mock->expects($this->any())->method('get'); $get = function ($entity, $data) { return isset($data['id']) && $data['id'] === $entity->getId() || isset($data['value']) && $data['value'] === $entity->getValue(); }; $delete = function () use($mock) { $mock->delete(); return true; }; $update = function () use($mock) { $mock->update(); return true; }; $add = function () use($mock) { $mock->add(); return true; }; $this->restHelper->compareEntitiesWithData([$mockedObject, $mockedObject2, $mockedObject3], [['id' => 1, 'value' => 3], ['id' => 2], ['value' => 2]], $get, $add, $update, $delete); }