Ich möchte den Befehl in Symfony mit LiipFunctionalTestBundle testen. Der Befehl sendet daher eine E-Mail. Ich möchte überprüfen, ob entweder send in Mailer-Dienst ausgeführt wurde, oder eine Methode in meinem Repository ausgeführt wurde.LiipFunctionalTestBundle Mock-Service in RunCommand
Der Test schlägt fehl, wie setAsNotified nicht ausgeführt wird, aber es ist.
namespace Tests\AppBundle\Controller;
use AppBundle\Command\NewMessageEmailCommand;
use Liip\FunctionalTestBundle\Test\WebTestCase;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Symfony\Component\Console\Tester\CommandTester;
class NewMessageEmailCommandTest extends WebTestCase
{
public function setUp()
{
$this->fixtures = $this->loadFixtureFiles(array(
'@AppBundle/DataFixtures/ORM/users.yml',
'@AppBundle/DataFixtures/ORM/messages.yml',
));
}
public function testExecute()
{
$kernel = $this->createKernel();
$kernel->boot();
$msgRep = $this->getContainer()->get('doctrine.orm.default_entity_manager')->getRepository('AppBundle:Message');
$stub2 = $this->getMockBuilder(get_class($msgRep))
->disableOriginalConstructor()
->setMethods(['setAsNotified'])
->getMock();
$stub2->expects($this->atLeastOnce())
->method('setAsNotified')
->willReturn(true);
$this->runCommand('email:message_received:send',[
'--limit' => 1
], true);
}
}