Qualcuno può spiegare cosa fa l'annotazione @magentoDbIsolation per un test di integrazione?


9

Guardando attraverso i test di integrazione scritti per i moduli principali, vedo molte istanze dell'annotazione @magentoDbIsolation enabledapparire sopra le funzioni di test.

Non si fa menzione di ciò in alcun punto della documentazione MTF, e anche dopo aver guardato Magento\TestFramework\Annotation\DbIsolationnon sono ancora abbastanza chiaro sul suo scopo.

Qualcuno può fornire alcune informazioni? Grazie.

Risposte:


17

Se viene specificata questa annotazione, la transazione DB verrà avviata prima del test e ripristinata dopo di essa. Questo può essere utile se non vengono utilizzati dispositivi DB e qualcosa viene salvato nel DB nel test. Si noti che @magentoDataFixtureavvolge anche il test nella transazione, quindi non è necessario utilizzare entrambe le annotazioni contemporaneamente.
E solo per completezza, specificare @magentoDbIsolation disabledè utile solo se è @magentoDbIsolation enabledstato specificato in una classe di test.


2

L'annotazione @magentoDbIsolationviene utilizzata nei test di integrazione per isolare le modifiche al DB effettuate dai test. In altre parole, se esegui il test e apporti alcune modifiche a db e durante l'esecuzione del test richiedi questi dati da db in un'altra sessione:

  • con @magentoDbIsolation enabledte non otterrai nulla, poiché i dati vengono isolati nella transazione.
  • con @magentoDbIsolation disabledte otterrai dati, perché i dati non sono isolati.
  • senza alcuna annotazione, i test di integrazione vengono eseguiti in modalità non isolata.

imho, per cambiare i dati db è meglio usare l'annotazione @magentoDataFixture, che usa l'isolamento dei dati di default.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.