Behat:希望发送电子邮件

时间:2019-02-18 14:55:10

标签: phpunit behat

我看到的大多数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期望值?我某种程度上感觉到我完全误解了这里的内容。

1 个答案:

答案 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 ) );
}

这足以测试上述有关时间间隔的用户故事。