Alguém pode explicar o que a anotação @magentoDbIsolation faz para um teste de integração?

9

Examinando os testes de integração escritos para os módulos principais, vejo muitas instâncias da anotação @magentoDbIsolation enabledaparecerem acima das funções de teste.

Não há menção a isso em nenhum lugar da documentação do MTF e, mesmo depois de olhar, Magento\TestFramework\Annotation\DbIsolationainda não estou muito claro quanto ao seu objetivo.

Alguém pode fornecer algumas dicas? Obrigado.

brendanmckeown
fonte

Respostas:

17

Se essa anotação for especificada, a transação do banco de dados será iniciada antes do teste e revertida após ela. Isso pode ser útil se nenhum equipamento de DB for usado e alguma coisa for salva no DB no teste. Observe que @magentoDataFixturetambém envolve o teste na transação, não sendo necessário usar as duas anotações simultaneamente.
E apenas por uma questão de integridade, a especificação @magentoDbIsolation disabledé útil apenas se ela @magentoDbIsolation enabledfoi especificada em uma classe de teste.

Alex Paliarush
fonte
2

A anotação @magentoDbIsolationé usada em testes de integração para isolar modificações no banco de dados feitas por testes. Em outras palavras, se você executar o teste e fazer algumas alterações no db e durante a execução do teste, solicitar esses dados do db em outra sessão:

  • com @magentoDbIsolation enabledvocê não receberá nada, porque os dados são isolados na transação.
  • com @magentoDbIsolation disabledvocê obterá dados, porque os dados não são isolados.
  • sem nenhuma anotação, os testes de integração são executados no modo não isolado.

imho, para alterar dados db, é melhor usar anotações @magentoDataFixture, que usam isolamento de dados por padrão.

Arkadii Chyzhov
fonte