Behat: ожидать отправки по электронной почте - PullRequest
0 голосов
/ 18 февраля 2019

Большинство из нескольких примеров 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 голосов
/ 19 февраля 2019

Поскольку я хочу, чтобы у моего доменного объекта не было никаких зависимостей, я решил просто протестировать логику домена, которая включает в себя отправку сообщений, и ничего более.Насколько я понимаю, это то, чем занимается 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 ) );
}

Этого должно быть достаточно для проверки вышеупомянутой пользовательской истории относительно временного интервала.

...