Php Behat未识别:arg样式标记

Php Behat未识别:arg样式标记,php,behat,Php,Behat,我刚刚读到,我可以在给定注释的上下文方法中使用:argument格式的标记,但是当我这样做时,它告诉我步骤未定义 /** * @Given I am logged in as :username */ public function iAmLoggedInAs( $username ) { // ... } 这将返回未定义的步骤“我以'disco superuser'身份登录”,但是 /** * @Given /^I am logged in as "([^"]*)"$/ */

我刚刚读到,我可以在给定注释的上下文方法中使用:argument格式的标记,但是当我这样做时,它告诉我步骤未定义

/**
 * @Given I am logged in as :username
 */
public function iAmLoggedInAs( $username )
{
    // ...
}
这将返回
未定义的步骤“我以'disco superuser'身份登录”
,但是

/**
 * @Given /^I am logged in as "([^"]*)"$/
 */
public function iAmLoggedInAs( $username )
{
    // ...
}
。。。很好

我错过了什么

Behat版本:2.5.3

对于那些“不确定”的人:该功能称为turnip模式,这是Behat 3中的新功能。你可以在课堂上读到一些关于它的内容,或者在课堂上挖掘更多细节

如果您提供了正确的详细信息,它会抛出未定义的步骤定义异常,因为您使用的是单引号。用双引号再次检查,必须修复它。类中的
TOKEN\u REGEX
允许使用单引号和双引号,以及完全不使用引号,还提供了三种情况的示例,我完全忽略了这三种情况


此外,如果有人尝试,您不能在一个定义中组合不同类型的模式(turnip和regex)。阅读原因和其他有用信息。

您能给我指一个描述
:name
符号的文档吗?您确定behat提供了此功能吗?我在里面找不到。我在这里找到的。。。我假设,当我转到Docs链接时,它链接到一个包含2.5的URI,我认为v3还没有发布,因此带有/latest/的文档将应用于v2.5。也许这是一个无效的假设。啊,这是因为我使用的是v2.5。我认为,因为Behat站点上的“Docs”链接链接到了/2.5/URI,所以这是最新版本,所以我在URI中找到的带有/latest/的doc页面是针对v2.5的。这似乎是一个无效的假设。关于你的建议有一点值得注意。。。在(v3)文档中,您可以对字符串使用双引号或单引号(请参阅以供参考)。谢谢你提供的信息。@TobyG,嘿,伙计,谢谢你指出。我完全忽略了那一部分。