Разрабатываю свой smsBundle и решил научиться грамотно писать тесты. В процессе возникли вопросы. Собственно, вот один из моих примеров теста -
https://github.com/manyrus/SmsBundle/blob/ba6a45cd... для класса
https://github.com/manyrus/SmsBundle/blob/ba6a45cd... . Не слишком ли много кода? А то эта монструозность меня пугает. И что делать с дублированием кода? Особенно волнует один момент. Стоит ли делать вот такую проверку коллбэком:
$obj = $this;//php 5.3 support
$eventDispatcher = $this->getMock('\Symfony\Component\EventDispatcher\EventDispatcher');
$sms = $this->getSmsMessage();
$eventDispatcher
->expects($this->at(0))
->method('dispatch')
->with($this->equalTo(MergeEvents::ON_MERGE)
, $this->isInstanceOf('Manyrus\SmsBundle\Lib\Event\MergeEvent'))
->will($this->returnCallback(
function($name,MergeEvent $mergeEvent) use($sms, $obj){
$obj->assertEquals($mergeEvent->getMessage(), $sms);
}
));
//где-нибудь в другом классе, куда подставили $eventDispatcher
public function send(SmsMessage $sms) {
//some action
$event = new MergeEvent();
$event->setSmsMessage($sms);
$this->dispatcher->dispatch(MergeEvents::ON_MERGE, $event);
}