¿Alguien puede explicar qué hace la anotación @magentoDbIsolation para una prueba de integración?

9

Al revisar las pruebas de integración escritas para los módulos principales, veo muchas instancias de la anotación que @magentoDbIsolation enabledaparecen sobre las funciones de prueba.

No se menciona esto en ninguna parte de la documentación de MTF, e incluso después de mirarlo Magento\TestFramework\Annotation\DbIsolationtodavía no estoy del todo claro en cuanto a su propósito.

¿Alguien puede proporcionar alguna idea? Gracias.

Brendanmckeown
fuente

Respuestas:

17

Si se especifica esta anotación, la transacción de base de datos se iniciará antes de la prueba y se revertirá después. Esto puede ser útil si no se utilizan accesorios DB y se guarda algo en DB en la prueba. Tenga en cuenta que @magentoDataFixturetambién envuelve la prueba en la transacción, por lo que no es necesario usar ambas anotaciones simultáneamente.
Y solo por completar, la especificación @magentoDbIsolation disabledsolo es útil si @magentoDbIsolation enabledse especificó en una clase de prueba.

Alex Paliarush
fuente
2

La anotación @magentoDbIsolationse utiliza en pruebas de integración para aislar modificaciones de DB realizadas por pruebas. En otras palabras, si ejecuta su prueba y realiza algunos cambios en db y durante la ejecución de la prueba, solicita estos datos de db en otra sesión:

  • con @magentoDbIsolation enabledusted no obtendrá nada, porque los datos están aislados en la transacción.
  • con @magentoDbIsolation disabledusted obtendrá datos, porque los datos no están aislados.
  • sin ninguna anotación, las pruebas de integración se ejecutan en modo no aislado.

En mi humilde opinión, para cambiar los datos db es mejor usar la anotación @magentoDataFixture, que usa el aislamiento de datos de forma predeterminada.

Arkadii Chyzhov
fuente