Czy ktoś może wyjaśnić, co robi adnotacja @magentoDbIsolation dla testu integracji?


9

Przeglądając testy integracyjne napisane dla podstawowych modułów, widzę wiele wystąpień adnotacji @magentoDbIsolation enabledpojawiających się nad funkcjami testowymi.

Nigdzie nie wspomniałem o tym w dokumentacji MTF, a nawet po przyjrzeniu Magento\TestFramework\Annotation\DbIsolationsię wciąż nie jestem całkiem pewien, co do jego celu.

Czy ktoś może zapewnić wgląd? Dzięki.

Odpowiedzi:


17

Jeśli ta adnotacja jest określona, ​​transakcja DB zostanie uruchomiona przed testem, a po niej wycofana. Może to być pomocne, jeśli nie są używane żadne urządzenia DB, a coś jest zapisywane w DB w teście. Pamiętaj, że @magentoDataFixturerównież zawija test w transakcji, więc nie musisz jednocześnie używać obu adnotacji.
I tylko ze względu na kompletność, określenie @magentoDbIsolation disabledjest użyteczne tylko wtedy, gdy @magentoDbIsolation enabledzostało określone w klasie testowej.


2

Adnotacja @magentoDbIsolationjest używana w testach integracyjnych do izolowania modyfikacji DB dokonanych przez testy. Innymi słowy, jeśli uruchomisz test i wprowadzisz zmiany w db, a podczas wykonywania testu poprosisz o te dane od db w innej sesji:

  • z @magentoDbIsolation enabledtobą nic nie dostaniesz, ponieważ dane są izolowane w transakcji.
  • gdy @magentoDbIsolation disabledotrzymasz dane, ponieważ dane nie są izolowane.
  • bez adnotacji testy integracyjne są wykonywane w trybie nieizolowanym.

imho, aby zmienić dane bazy danych, lepiej użyć adnotacji @magentoDataFixture, która domyślnie korzysta z izolacji danych.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.