單元測試自動繫結屬性。
你可以將第 1 步,第三步寫 TestCase 裡面,自己的單元測試裡面執行第二步,第四步。
屬性自動繫結不僅限單元測試使用,Repository, Service, Action 同樣可以使用。
composer require --dev gordensong/laravel-autowire
自動繫結屬性
1. 引用 Trait
use AutoWireTrait;
2. 使用註解宣告繫結屬性
#[AutoWire]
private ?Cat $cat = null; // 必須有預設值
3. 繫結值為空的屬性
$this->autoWireProperties();
4. 呼叫繫結的屬性
self::assertSame('miao', $this->cat->miao());
demo
<?php
namespace Tests;
class Cat
{
public function miao(): string {
return 'miao';
}
}
<?php
namespace Tests;
use GordenSong\Laravel\Support\AutoWire;
use GordenSong\Laravel\Support\AutoWireTrait;
class AutoWireTest extends TestCase
{
// 第一步:引用 Trait use AutoWireTrait
use AutoWireTrait;
// 第二步:使用註解宣告繫結屬性
#[AutoWire]
private ?Cat $cat = null;
protected function setUp(): void {
parent::setUp();
// 第三步: $this->autoWireProperties(); 繫結值為空的屬性
$this->autoWireProperties(); // !!!
}
public function test_autowire() { // 第四步:呼叫繫結的屬性
self::assertSame('miao', $this->cat->miao());
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結