私は電子メールクラスオブジェクトを作成し、それを第3のクラス(電子メール送信者)に渡すサービスを持っています。スタブ関数の引数からプロパティを取得するには?
この機能によって生成される電子メールの本文を確認したいと思います。
Service.php
class Service
{
/** @var EmailService */
protected $emailService;
public function __construct(EmailService $emailService)
{
$this->emailService = $emailService;
}
public function testFunc()
{
$email = new Email();
$email->setBody('abc'); // I want to test this attribute
$this->emailService->send($email);
}
}
Email.php:
class Email
{
protected $body;
public function setBody($body)
{
$this->body = $body;
}
public function getBody()
{
return $this->body;
}
}
EmailService.php
interface EmailService
{
public function send(Email $email);
}
だから私はemailServiceや電子メールのスタブクラスを作成します。しかし、私は電子メールの本文を検証することはできません。体が生成され、実際のアプリで
Call to undefined method Prophecy\Prophecy\MethodProphecy::shouldBe() in /private/tmp/phpspec/spec/App/ServiceSpec.php on line 18
:電子メールがテスト機能
class ServiceSpec extends ObjectBehavior
{
function it_creates_email_with_body_abc(EmailService $emailService, Email $email)
{
$this->beConstructedWith($emailService);
$emailService->send($email);
$email->getBody()->shouldBe('abc');
$this->testFunc();
}
}
内に作成されるため、$メール:> setBody()が呼び出された場合、また、私はこれを持ってチェックすることはできませんそれが正しく生成されているかどうかをテストします。どうやってやるの? PHPSpecので
ありがとうございます。本当に感謝しております! – xorik
ここに作業コードをアップロードしました:https://gist.github.com/xorik/89da2c3c065d1b6b6d10d915191305f2 – xorik