FluentBuilder – Meu primeiro pacote Nuget

Olá, pessoal

No começo da semana publiquei no Nuget meu primeiro pacote: FluentBuilder.

O propósito dessa lib é facilitar nossa vida, evitando que tenhamos que criar manualmente um Builder para cada objeto que iremos testar em nossa suite de testes.

Um exemplo básico de uso seria o seguinte:

var novoEndereco = FluentBuilder<Endereco>
                 .New()
                 .With(endereco => endereco.Logradouro, "Av. Afonso Pena")
                 .With(endereco => endereco.Bairro, "Centro")
                 .Build();

Continue lendo »

Construindo objetos complexos com Builders (parte 2 de 2)

Olá, pessoal

Nesta segunda parte do artigo sobre o design pattern Builder, vou mostrar o exemplo dado na primeira parte (<<leia aqui>>), utilizando o conceito de interface fluente. Também falarei sobre a aplicação de builders para criação de dados de testes (Test Data Builders).

EXEMPLO – INTERFACE FLUENTE

Começamos alterando a interface do builder abstrato “CriadorDeGuerreiro”, de forma que os métodos que constroem partes do objeto-produto agora retornem o próprio builder:

public abstract class CriadorDeGuerreiro
{
    protected Guerreiro _guerreiro;
    public Guerreiro ObterGuerreiro()
    {
        return _guerreiro;
    }

    // retorno alterado de 'void' para 'CriadorDeGuerreiro'
    public abstract CriadorDeGuerreiro ComEspada();
    public abstract CriadorDeGuerreiro ComArmadura();
    public abstract CriadorDeGuerreiro ComArco();
}

Continue lendo »