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
}
}
当然,它通常会变得更复杂,但至少可以让您了解如何开始(使用服务更新实体的状态并检查实体的新状态是否符合预期).
希望对您有所帮助。
我是应用程序测试和 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
}
}
当然,它通常会变得更复杂,但至少可以让您了解如何开始(使用服务更新实体的状态并检查实体的新状态是否符合预期).
希望对您有所帮助。