我看到的大多数Behat示例中的大多数都测试了对象属性,例如
/**
* @Then the overall basket price should be £:price
*/
public function theOverallBasketPriceShouldBePs($price)
{
PHPUnit_Framework_Assert::assertSame(
floatval($price),
$this->basket->getTotalPrice()
);
}
但是如果我的用户故事像这样:
Given, a user has received pdf1
When 48 hours have passed since the download
Then the application must send pdf2 to the user
在这种情况下,我应该如何测试@then
步骤-模拟并使用PHPUnit期望值?我某种程度上感觉到我完全误解了这里的内容。
答案 0 :(得分:0)
由于我希望域对象没有任何依赖关系,因此我选择纯粹测试涉及发送消息的域逻辑,仅此而已。据我了解,这就是BDD的含义。在我的Lead
实体中:
public function isEligibleForNextMessage( int $interval ) {
if ( /* Do Logic */ ) :
return TRUE;
endif;
return FALSE;
}
然后进入我的LeadContext
:
/**
* @Then the application must send pdf2 to the user
*/
public function sendNextMessage() {
Assert::assertTrue( $this->Lead->isEligibleForNextMessage( 172800 ) );
}
这足以测试上述有关时间间隔的用户故事。