assertDirectoryIsWritable(CACHE_DIR); // Valid cache file. $this->assertTrue(copy($validCacheFilename, $cacheFilename)); $dispatcher = Routing::getDispatcher(); $this->assertInstanceOf(Dispatcher::class, $dispatcher); $this->assertSame($expected, $dispatcher->dispatch('GET', '/')); $this->assertFileEquals($validCacheFilename, $cacheFilename); // Invalid cache file. $this->assertTrue(copy($invalidCacheFilename, $cacheFilename)); $dispatcher = Routing::getDispatcher(); $this->assertInstanceOf(Dispatcher::class, $dispatcher); $this->assertSame($expected, $dispatcher->dispatch('GET', '/')); $this->assertFileNotEquals($invalidCacheFilename, $cacheFilename); // Create new cache file. $this->assertTrue(unlink($cacheFilename)); $this->assertFileNotExists($cacheFilename); $dispatcher = Routing::getDispatcher(); $this->assertInstanceOf(Dispatcher::class, $dispatcher); $this->assertSame($expected, $dispatcher->dispatch('GET', '/')); $this->assertFileExists($cacheFilename); // Without a cache file. $GLOBALS['cfg']['environment'] = 'development'; $dispatcher = Routing::getDispatcher(); $this->assertInstanceOf(Dispatcher::class, $dispatcher); $this->assertSame($expected, $dispatcher->dispatch('GET', '/')); } }