用途:为 Oro Commerce 6.1 捆绑包编写、配置、调试和运行 Behat 集成测试。Oro 在 Behat 之上扩展了套件自动发现、基于 Mink 的元素抽象、Alice 夹具加载、特性标签驱动的服务打桩和自动数据库隔离。捆绑包的 Behat 资源位于 Tests/Behat/,入口是 Tests/Behat/behat.yml。
主要能力:套件配置支持自动发现(套件键与已注册捆绑包同名且 paths 指向 @BundleName/...)和手动的 symfony_bundle 注册(套件名与捆绑包不同、一个捆绑包含多个套件或路径非标准时使用)。共享上下文通过 shared_contexts 自动传播到每个套件,如 Oro\Bundle\TestFrameworkBundle\Tests\Behat\Context\OroMainContext。可在配置中定义元素、页面对象和表单映射。
夹具:Alice YAML 夹具位于 Tests/Behat/Features/Fixtures/,用标签 @fixture-BundleName:file.yml 加载(冒号必填);支持 ?user=admin 等安全上下文查询参数,内置 @admin、@adminRole、@organization、@business_unit 引用,自定义引用通过 oro_behat.reference_repository_initializer 服务注册。
运行:bin/behat -vv -f pretty -o std -f junit -o var/logs/behat --strict --consumers=2 -s AcmeDemoBundle;用 bin/behat -di -s 套件名 查看步骤定义。本地 behat.yml 覆盖根目录提交的 behat.yml.dist,不应提交。
打桩:在 Tests/Behat/parameters.yml 定义候选 mock,用 oro_test.behat.feature_tag_aware_factory 按特性/场景标签选择,配合 @behat-test-env 与 --behat-test-env 下的 config/config_behat_test.yml 生效。
限制与注意:Oro 隔离只重置数据库,不重置 Elasticsearch 索引和消息队列状态,需谨慎安排场景顺序并显式刷新索引;夹具标签缺少捆绑包前缀会静默不加载;新增套件若漏掉 shared_contexts 会缺核心步骤;6.1 不存在 --skip-isolators-tag,当前标志是 --skip-isolators。参考资料涉及 references/suite-config.md、fixtures.md、feature-tag-mocking.md、chrome-setup.md、v6.1.md、v7.0.md。