正则表达式匹配下面的黄瓜步骤
Given I login to system
Given login to system
Given user attempts to login to system
Given I attempt to login to system
Given attempts to login to system
这应该失败-用户或I或BLANK有效,但他或其他字词无效
Given he login to system
我尝试了以下方法,但没有帮助。
Given(/(?: user|I?)?(?: attempts to)? login to system/, function () {});
答案 0 :(得分:0)
我猜测您可能正在尝试设计类似于以下内容的表达式:
^Given\s*(?:I|user)?\s*(?:attempts?\s+to)?\s*(?:login\s+to\s+system)$
如果要浏览/简化/修改该表达式,请在this demo的右上角进行解释。
答案 1 :(得分:0)
在阻塞时完全不使用正则表达式。您将只做一些复杂的事情,可能无法满足您方案所要求的所有不同用例。而是为每个步骤定义一个简单的步骤定义,并让每个步骤定义调用相同的帮助方法来实现功能。
所以你得到
Given 'I login into the system' do
login as: @i
end
Given 'Fred logs into the system' do
login as: @fred
end
Given 'I login into the system as an admin' do
login as: @i, role: 'admin'
end
...
这可以简化,足够干燥,并且完全消除了您在步骤定义中对正则表达式的需要(注意:我从一开始就很在意,并且几年没有使用过正则表达式,它们根本没有任何好处) ,并鼓励在实现时提供更好的代码(该登录功能将被广泛使用)。