有人可以解释@magentoDbIsolation批注对集成测试的作用吗?


9

在为核心模块编写的集成测试中,我看到许多注释实例@magentoDbIsolation enabled出现在测试功能上方。

MTF文档中的任何地方都没有提到这一点,即使在看了之后,Magento\TestFramework\Annotation\DbIsolation我仍然不清楚它的用途。

谁能提供一些见识?谢谢。

Answers:


17

如果指定了此注释,则数据库事务将在测试之前启动,并在测试之后回滚。如果没有使用数据库固定装置,并且在测试中将某些内容保存到数据库中,这将很有帮助。请注意,这@magentoDataFixture也将测试包装在事务中,因此不需要同时使用两个注释。
出于完整性考虑,@magentoDbIsolation disabled仅当在@magentoDbIsolation enabled测试类上指定时,指定才有用。


2

批注@magentoDbIsolation用于集成测试中,以隔离测试进行的数据库修改。换句话说,如果您运行测试并对db进行一些更改,并且在执行测试期间,您需要在另一个会话中从db请求这些数据:

  • @magentoDbIsolation enabled您一无所获,因为数据被隔离在事务中。
  • 随着@magentoDbIsolation disabled您将获取数据,因为数据不是孤立的。
  • 没有任何注释的集成测试将以非隔离模式执行。

恕我直言,要更改db数据,最好使用注释@magentoDataFixture,默认情况下使用数据隔离。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.