В моем php-файле я использую Zend\Cache\Storage\StorageInterface
. Я связал этот интерфейс с кешем Zend \ filesystem. Я должен тестировать основной файл php. Проблема в том, что StorageInterface не определяет метод сброса. Файловая система имеет метод сброса из другого интерфейса.
В моем модульном тестировании я пытаюсь смоделировать StorageInterface, но проблема в том, что он выдает ошибку о том, что сброс не определен. Как я могу заглушить метод сброса?
Переплет:
$container->bindIf(
"Zend\\Cache\\Storage\\StorageInterface",
function () {
$directoryPath = "/tmp/zend_report_cache";
if (!file_exists($directoryPath) && !mkdir($directoryPath)) {
throw new Exception("Failed to create directory [directoryPath=$directoryPath]");
}
return \Zend\Cache\StorageFactory::factory(array(
'adapter' => array(
'name' => 'filesystem',
'options' => array(
'cache_dir' => $directoryPath
),
),
'plugins' => array('serializer'),
));
}
);
Main.php (отображается только соответствующий код
use Zend\Cache\Storage\StorageInterface;
public function __destruct()
{
$this->cache->flush();
}
файл модульного теста
private function getCacheMock()
{
$cacheMock = $this->setMethods(['execute'])->createMock(StorageInterface::class);
$cacheMock->expects($this->at(0))->method('setItem')->with(CsvReport::HEADER_CACHE_KEY, []);
$cacheMock->expects($this->at(1))->method('getItem')->with(CsvReport::HEADER_CACHE_KEY)->willReturn([]);
$cacheMock->expects($this->at(2))->method('setItem')->with(CsvReport::HEADER_CACHE_KEY, ['key1', 'key2', 'key3']);
$cacheMock->expects($this->at(3))->method('setItem')->with(0, $this->getMockRow(0));
$cacheMock->expects($this->at(4))->method('getItem')->with(CsvReport::HEADER_CACHE_KEY)->willReturn(['key1', 'key2', 'key3']);
$cacheMock->expects($this->at(5))->method('setItem')->with(CsvReport::HEADER_CACHE_KEY, ['key1', 'key2', 'key3', 'key4']);
$cacheMock->expects($this->at(6))->method('setItem')->with(1, $this->getMockRow(1));
$cacheMock->expects($this->at(7))->method('getItem')->with(CsvReport::HEADER_CACHE_KEY)->willReturn(['key1', 'key2', 'key3', 'key4']);
$cacheMock->expects($this->at(8))->method('setItem')->with(CsvReport::HEADER_CACHE_KEY, ['key1', 'key2', 'key3', 'key4', 'key5']);
$cacheMock->expects($this->at(9))->method('setItem')->with(2, $this->getMockRow(2));
return $cacheMock;
}
Ошибка: Попытка настроить метод "сброс", который не может быть настроен, потому что он не существует, не был указан, является окончательным или является статическим