Чи може хтось пояснити, що анотація @magentoDbIsolation робить для тесту на інтеграцію?


9

Переглядаючи тести інтеграції, написані для основних модулів, я бачу, що багато екземплярів примітки @magentoDbIsolation enabledз’являються над тестовими функціями.

У документації MTF про це ніде не згадується, і навіть після перегляду Magento\TestFramework\Annotation\DbIsolationя все ще не зовсім зрозумілий щодо його мети.

Чи може хтось надати деяке розуміння? Дякую.

Відповіді:


17

Якщо вказана анотація, транзакція з БД буде розпочата перед тестом і повернута після неї. Це може бути корисно, якщо не використовуються світильники БД і щось зберігається в БД в тесті. Зверніть увагу, що @magentoDataFixtureтест також завершує транзакцію, тому не потрібно використовувати обидва анотації одночасно.
І лише задля повноти, уточнення @magentoDbIsolation disabledкорисне лише в тому випадку, якщо @magentoDbIsolation enabledтест був вказаний на тестовому класі.


2

Анотація @magentoDbIsolationвикористовується в інтеграційних тестах для виділення модифікацій БД, зроблених тестами. Іншими словами, якщо ви запускаєте тест і вносите деякі зміни в db, а під час виконання тестових запитів ви вимагаєте отримати ці дані від db в іншому сеансі:

  • з @magentoDbIsolation enabledвами нічого не вийде, оскільки дані ізольовані в транзакції.
  • з @magentoDbIsolation disabledви отримаєте дані, дані викликають не ізольовані.
  • без будь-яких анотацій інтеграційні тести виконуються в неізольованому режимі.

imho, для зміни даних DB краще використовувати анотацію @magentoDataFixture, яка використовує ізоляцію даних за замовчуванням.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.