Documentation
¶
Overview ¶
Package scenario decide, em runtime, qual comportamento uma requisição recebe: sucesso, erro de negócio, erro de servidor, timeout, corpo malformado ou desconexão. A escolha é feita por um Scenario (tipicamente um Profile com pesos), deixando o transport apenas executar o Result.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Kind ¶
type Kind int
Kind enumera os comportamentos possíveis de uma resposta mockada.
const ( // KindSuccess devolve a resposta de sucesso documentada do endpoint. KindSuccess Kind = iota // KindBusinessError devolve um erro de negócio documentado (4xx) do endpoint. KindBusinessError // KindServerError devolve um status de servidor fixo (ex.: 500, 503). KindServerError // KindTimeout dorme por Delay e então responde 504, simulando serviço travado. KindTimeout // KindMalformed responde 200 com um corpo JSON inválido. KindMalformed // KindDisconnect derruba a conexão sem responder. KindDisconnect )
type Profile ¶
type Profile struct {
// contains filtered or unexported fields
}
Profile é um Scenario que sorteia o Result conforme pesos. A soma dos pesos não precisa ser 1; é normalizada no sorteio.
func (*Profile) Resolve ¶
func (p *Profile) Resolve(*RequestContext) Result
Resolve sorteia um Result conforme os pesos do profile.
type RequestContext ¶
RequestContext carrega o que o scenario pode inspecionar para decidir. No MVP a decisão é só probabilística, mas o endpoint já fica disponível para regras futuras (por path, método, etc.).
type Scenario ¶
type Scenario interface {
Resolve(*RequestContext) Result
}
Scenario resolve o comportamento de uma requisição.
func Always ¶
Always devolve um Scenario que sempre produz o mesmo Result. Útil para o profile happy, para testes e para overrides por endpoint no futuro.
func ForProfile ¶
ForProfile devolve o Scenario do profile nomeado. Retorna erro com a lista de profiles válidos quando o nome não existe.
func ForceStatus ¶
ForceStatus devolve um Scenario que força um status HTTP nas requisições cujo endpoint documenta aquele status na spec (sucesso ou erro). Endpoints que não documentam o status caem em base (tipicamente o profile). Assim, forçar 500 num profile happy faz só os endpoints com 500 mapeado responderem 500; os demais seguem o happy.