2
這是我的場景。我們在symfony中2,寫功能測試,其中測試設置引導內核:如何在不對功能控制器測試進行緩存結果的情況下使用Doctrine?
public function setUp()
{
$this->client = static::createClient();
static::$kernel = static::createKernel();
static::$kernel->boot();
$container = static::$kernel->getContainer();
$this->doctrine = $container->get('doctrine');
$this->em = $this->doctrine->getManager();
self::setupTestData();
}
最後一步調用一個設置了測試數據的程序。它將實體管理器$ this-> em傳遞給該例程。這一切都按預期工作,測試數據可用於控制器中的代碼。
控制器更新了一些相同的實體,所以在測試中我使用相同的實體管理器來獲取這些數據並驗證結果。爲了記錄,UI沒有可用的這些字段,它們被不同的代碼庫使用,所以我們被迫在測試中加載實體並且以這種方式驗證。像:
$repository = $this->doctrine->getRepository('MyBundle:Namespace\AutoSearch');
$autoSearch = $repository->findBy(array('Autosearch_ID' => $this->autoSearchId));
//verify expected values
無論是使用findBy或DQL我只能從測試設置,而不是由控制器修改更新的數據原數據。如果我使用SQL,我可以看到修改後的數據。爲什麼?由測試和控制器中的不同實體管理器進行實體跟蹤?緩存?
任何幫助表示讚賞
gah!曾嘗試 - >刷新()但不是 - >清除()!謝謝 –