Nós temos o objeto
public class MyObject{
protected MyObject(){}
public string Property1 {get;private set;}
public string Property2 {get;private set;}
public string Property3 {get;private set;}
public string Property4 {get;private set;}
public string Property5 {get;private set;}
public string Property6 {get;private set;}
public string Property7 {get;private set;}
public string Property8 {get;private set;}
public string Property9 {get;private set;}
public string Property10 {get;private set;}
}
Em nosso código de produção, preenchemos esse objeto através do automapper. Ele pode acessar as propriedades e configurá-las corretamente.
Agora, quando queremos testar esta classe em um pipeline futuro, não é possível preencher as propriedades com valores fictícios (a serem testados).
Existem algumas opções disponíveis.
Construtores personalizados para aceitar os parâmetros necessários para os testes e definir as propriedades, atualmente são necessários 3 construtores. Isso não está limpo, pois os construtores não atendem a nenhuma funcionalidade comercial.
Torne as propriedades virtuais para que a classe possa ser removida. Mas marcar as propriedades como virtuais não fornece nenhum valor comercial e polui minha classe.
Adicione um construtor de objetos à classe para construir internamente o objeto. Novamente, nenhum valor agregado aos negócios. Talvez um pouco mais limpo, mas ainda muito código não relevante nos objetos de domínio.
Alguma sugestão, conselho ou opções alternativas aqui?
fonte