Test CachingLoader – invalidace cache
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- greeny
- Člen | 405
Ahoj, mám třídu CachingLoader
a v ní tuto metodu, kterou
chci otestovat:
/**
* @param string $path
* @return mixed
*/
public function load($path)
{
if (!file_exists($path)) {
throw new FileNotFoundException("File '$path' not found.");
}
return $this->cache->load($path, function (&$dependencies) use ($path) {
$dependencies[Cache::FILES] = $path;
return Neon::decode(file_get_contents($path));
});
}
Bohužel mi neprochází testy z nějakého neznámého důvodu. Zde je můj test:
$storage = new MemoryStorage;
$cache = new Cache($storage);
$loader = new CachingLoader($storage);
$path = __DIR__ . '/../../../assets/config.neon';
$config = [
'a' => 'a',
'b' => [
'a',
'b',
'c',
]
];
@unlink($path);
file_put_contents($path, Neon::encode($config));
Assert::null($cache->load($path));
Assert::same($config, $loader->load($path));
Assert::same($config, $cache->load($path));
$config['c'] = 'c';
file_put_contents($path, Neon::encode($config)); // modify cached file
Assert::null($cache->load($path));
Na posledním assertu mi to hlásí, že $cache->load($path)
je stále pole. Netuším proč se ta cache neinvaliduje, netuší někdo?
Editoval greeny (26. 9. 2015 9:23)
- jiri.pudil
- Nette Blogger | 1029
imo proto, že MemoryStorage s dependencies vůbec nepočítá a nepracuje