问题描述
我已经更新了 Oro 应用程序中的登录表单,因此现在 behat 测试无法使用“鉴于我以 [email protected] 买家身份登录”来登录应用程序。
问题在于,在此功能上下文 (\Oro\Bundle\ApplicationBundle\Tests\Behat\Context\CommerceMainContext) 中,它搜索“电子邮件地址”和“密码”表单输入,但是这些表单输入现在有另一个名称。我怎样才能根据我们的需要覆盖这个上下文,或者我怎样才能改变方法使测试变得绿色?
解决方法
登录步骤在 OroMainContext
中实现
它通过在每个测试套件中注入的 behat.yml
配置隐式或显式(例如 OroUserBundle suite)。
选择器 _username
、_password
和 _submit
硬编码在 loginAsUserWithPassword
方法中。
您可以通过 BehatExtension 将所有 Behat 套件中的 OroMainContext 替换为您的继承者,请参阅 Behat\Testwork\ServiceContainer\Extension
,或者您可以重写 Oro\Bundle\FormBundle\Tests\Behat\Element\OroForm
并在那里进行肮脏的黑客攻击,因为此类将填写表单。不要忘记在你的 behat.yml
OroForm
元素的类
我猜,正确的方法是创建一个从 OroForm
扩展而来的登录名,它应该在 OroMainContext
中使用。此表单将具有接受两个参数 fill
和 login
的方法 password
。在这种情况下,您将只重写这个微小的元素来改变流程。但是,我也想,要做到这一点还有很长的路要走。