从BDD开始(使用Behat和Symfony2作为背景)
我只是从BDD和Behat开始,但我缺少了一个更复杂的示例,产品类别示例太简单(但是 当你想超越时,首先当然是必要的 我使用的模型没有唯一的字段,因此 这样做: 就我而言,我有一个1:1的关系:从BDD开始(使用Behat和Symfony2作为背景),symfony,cucumber,bdd,Symfony,Cucumber,Bdd,我只是从BDD和Behat开始,但我缺少了一个更复杂的示例,产品类别示例太简单(但是 当你想超越时,首先当然是必要的 我使用的模型没有唯一的字段,因此 这样做: 就我而言,我有一个1:1的关系: Room hotel_id ... Default configuration room_id name //"single room", "double room"... price ... 所以,当我想创建场景“场景:房间有一个默认值 配置“我想这样开始: I ha
Room
hotel_id
...
Default configuration
room_id
name //"single room", "double room"...
price
...
所以,当我想创建场景“场景:房间有一个默认值
配置“我想这样开始:
I have a room XXX
但我不能,因为我没有像“name”或其他任何字段
这是独一无二的,所以我只写:
I have a room
当我想要检索房间以添加默认值时,问题就出现了
在示例产品类别($Product=$this->getRepository('AcmeDemoBundle:Product')->findOneByName($productName);)中的配置类似,我不知道该怎么做..,如何检索用于添加默认配置的文件室对象?或者如何检索默认配置对象
你知道我该怎么做吗
编辑:
在everzet的回复之后,我想添加我感兴趣的场景:
When I add a default configuration to a room
Then I should find a room has a default configuration
也许这个场景听起来很奇怪,但正如我上面所说的,无论是在房间中还是在默认配置中,我都没有唯一的字段
那么,my.feature文件中的函数应该是什么呢?所有场景步骤定义都在单个上下文类实例中运行,每个场景都有自己的上下文实例。这意味着,您可以在一个步骤定义中对当前上下文设置IVAR,并在下一个步骤定义中读取其值。甚至在Behat文档中也有描述;-) 在您的例子中,您的
I have a room
步骤可以将最后一个持久化的记录id保存到上下文ivar中,下一步可以使用它的值在数据库中查找特定的(最后添加的)room。就像这样:
// Given I have a room
// …
$room = new Room();
$em->persist($room);
$em->flush();
$this->lastRoomId = $room->getId();
// …
// Then this room should have ...
// …
$room = $em->getRepository('AcmeDemoBundle:Room')
->findOneById($this->lastRoomId);
// …
所有场景步骤定义都在单个上下文类实例中运行,每个场景都有自己的上下文实例。这意味着,您可以在一个步骤定义中对当前上下文设置IVAR,并在下一个步骤定义中读取其值。甚至在Behat文档中也有描述;-) 在您的例子中,您的
I have a room
步骤可以将最后一个持久化的记录id保存到上下文ivar中,下一步可以使用它的值在数据库中查找特定的(最后添加的)room。就像这样:
// Given I have a room
// …
$room = new Room();
$em->persist($room);
$em->flush();
$this->lastRoomId = $room->getId();
// …
// Then this room should have ...
// …
$room = $em->getRepository('AcmeDemoBundle:Room')
->findOneById($this->lastRoomId);
// …
嗨,埃弗泽特,我在问题中写下了我的情景。希望我已经回答了你的问题;-)嗨,埃弗泽特,我在问题中写下了我的情景。希望我已经回答了你的问题;-)