簡體   English   中英

Symfony2中的單元測試服務

[英]Unit Testing services in Symfony2

我是應用程序測試和Symfony2的新手,所以我有一個問題。 例如,我有一些服務,一個發送郵件( $this->mailer->send($message) ),第二個對實體實例做一些事情,然后返回一個持久化的實例,所以在第一種情況下,我需要僅檢查assertTrue() (是否發送)? 但是什么需要檢查第二個呢? 有人可以幫我嗎?

實際上,這是一個相當廣泛的問題。 我在測試“修改”實體的服務時通常做的一個例子如下:

Service 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
    }
}

當然,它通常會變得更復雜,但是至少它可以使您了解如何啟動(使用服務來更新實體的狀態並檢查實體的新狀態是否是預期的狀態)。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM