Symfony2 中的单元测试服务

Unit Testing services in Symfony2

我是应用程序测试和 Symfony2 的新手,所以我有一个问题。例如我有一些服务,一个发送邮件($this->mailer->send($message)),第二个用实体实例做一些事情,然后 return 一个准备持久化的实例,所以在第一种情况下我只需要检查 assertTrue()(发送与否)?但是第二个需要检查什么?有人可以帮助我吗?

实际上,这是一个相当宽泛的问题。我在测试 "modify" 个实体的服务时通常会做的一个例子如下:

服务Adder更新实体的状态:基于另一个实体向实体添​​加值并在持久化之前设置正确的值。

// src/Acme/DemoBundle/Tests/Service/AdderTest.php
namespace Acme\DemoBundle\Tests\Service;

use Acme\DemoBundle\Service\Adder;
use Acme\DemoBundle\Entity\One;
use Acme\DemoBundle\Entity\Two;

class AdderTest extends \PHPUnit_Framework_TestCase
{
    public function testAdd()
    {
        $add = new Adder();
        $ent1 = new One();
        $ent2 = new Two();

        $ent2->setValue(1);
        $add->setOne($ent1);
        $add->setTwo($ent2);

        $add->updateEntity();// $ent1->setValue($ent2->getValue()+1);

        $this->assertEquals(2, $ent1->getValue());// Expected state of $ent1
    }
}

当然,它通常会变得更复杂,但至少可以让您了解如何开始(使用服务更新实体的状态并检查实体的新状态是否符合预期).

希望对您有所帮助。