如何覆盖 Oro 中的 behat 测试功能上下文?

How can I override behat tests Feature Context in Oro?

我更新了 Oro 应用程序中的登录表单,现在 behat 测试无法使用 'Given I login as AmandaRCole@example.org buyer'.

登录应用程序

问题在于,在此功能上下文 (\Oro\Bundle\ApplicationBundle\Tests\Behat\Context\CommerceMainContext) 中,它搜索 'Email Address' 和 'Password' 表单输入,但是这些表单输入现在有另一个名称。我如何根据需要覆盖此上下文,或者我如何更改方法以使测试绿色化?

登录步骤在 OroMainContext
中实现 它通过在每个测试套件中注入的 behat.yml 配置隐式或显式(例如 OroUserBundle suite)。
选择器 _username_password_submitloginAsUserWithPassword 方法中被硬编码。

您可以通过 BehatExtension 将所有 behat 套件中的 OroMainContext 替换为您的继承者,请参阅 Behat\Testwork\ServiceContainer\Extension,或者您可以重写 Oro\Bundle\FormBundle\Tests\Behat\Element\OroForm 并在那里进行肮脏的修改,因为这 class将填写表格。不要忘记为 behat.yml

中的 OroForm 元素重写 class

我猜,正确的方法是创建一个登录名,从 OroForm 扩展而来,应该在 OroMainContext 中使用。此表单将具有接受两个参数 loginpassword 的方法 fill。在这种情况下,您将只重写这个微小的元素来改变流程。但是,我也猜想,这是一个很长的路要走。