Я заметил, что когда я запускаю функциональный тест с PhpUnit, если в базе данных есть модификация, это делается. Однако, если я нахожусь в середине своего теста и хочу восстановить запись, которая была изменена, она возвращается мне в своей старой версии, что очень проблематично. c.
Например, если У меня есть тест, в котором:
- Я собираю определенный элемент
- Я активирую его (следовательно, изменение в базе данных его свойства enable) через URL-адрес контроллера
- Я хочу проверить, что он активен
- Я снова извлекаю его из базы данных
- Проверяю, что он активен
Ну, это ' Я верну мне свой старый элемент и скажу, что он не активен.
Это заставляет меня создать второй тест, чтобы получить его, а затем проверить, что он активен
public function testEnableArticle()
{
$article = $this->getLastArticle(); //Find last article
$admin = $this->getAdmin();
$this->client->loginUser($admin);
// Request to enable last article
$this->client->request('GET', sprintf("/admin/articles/%s/enable", $article->getId()));
// Now my article should be enabled :
$updatedArticle = $this->getLastArticle();
$this->assertSame(1, $updatedArticle->getEnable());
// But return false because here my article seems to be the previous version before enable
}
Итак, я мне нужен второй тест сразу после обновления статьи:
public function testLastArticleIsEnabled()
{
$updatedArticle = $this->getLastArticle();
$this->assertSame(1, $updatedArticle->getEnable());
// And here, it works
}
Чтобы получить мою последнюю статью, я использую свою пользовательскую функцию:
public function getLastArticle()
{
return $this->manager->getRepository(Article::class)->findLastArticle();
}
Это очень странно ... Может кто-нибудь поможет мне, пожалуйста?