📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials PHPUnit Testing Test Builder Pattern

Test Builder Pattern

5 min read
Build test objects fluently with a Builder pattern: withName(), asAdmin(), withAge(), build().

Test Builder

class UserBuilder {
    private array $attrs = [
        "name"=>"Alice","email"=>"a@b.com","age"=>28,"role"=>"user"
    ];
    public function withName(string $name): static {
        $c = clone $this; $c->attrs["name"]=$name; return $c;
    }
    public function asAdmin(): static {
        $c = clone $this; $c->attrs["role"]="admin"; return $c;
    }
    public function build(): User {
        return new User(...$this->attrs);
    }
}

$admin = (new UserBuilder)->asAdmin()->withName("Bob")->build();