Symfony5创建一个用户进行测试

rqqzpn5f  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(85)

我有一个PurchaceFactory,它的一个参数是User实体对象。
我想创建一个用户:

class PurchaceFactoryTest extends TestCase
{
    public function testCreate()
    {
        $user = new User();

        $user->setEmail('user1@email.com');
        $user->setPassword('password');
        $user->setRoles(["ROLE_USER", "ROLE_BUY"]);

        $jsonEncoder = new JsonEncoder();

        $artworkData = [
            "ID"        => 129884,
            "title"     => "Starry Night and the Astronauts",
            "author"    => "Alma Thomas",
            "thumbnail" => [
                "lqip"     => "data:image/gif;base64,somebase64data",
                "width"    => 800,
                "height"   => 600,
                "alt_text" => "Al text"
            ]
        ];

        $purchaceFactory = new PurchaceFactory($jsonEncoder);
        $purchace = $purchaceFactory->create($user, $artworkData);
        //assertions
        //...
    }
}

问题是,我不能设置用户的id,因为当我创建bin/console make:user时,实体没有setId
purchaseFactory使用$user属性。
如何用id模拟User对象?
我不想修改UserEntity并添加setId,因为id应该是不可变的。

ltqd579y

ltqd579y1#

尝试创建TestUser实体并使用User实体扩展它。然后停用在属性id中设置id的策略。

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(name="user")
 */
class TestUser extend User
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     * @ORM\Column(type="integer")
     */
    private $id;

    public function setId(int $id): void
    {
        $this->id = $id;
    }
}

$user = new TestUser();
$user->setId(1000);

相关问题