Nos exemplos até agora temos retornado valores simples usando willReturn($value). Essa sintaxe curta é o
Às vezes você quer retornar um dos argumentos de uma chamada de método (inalterada) como o resultado de uma
Ao testar uma interface fluente, às vezes é útil fazer um método esboçado retornar uma referência ao objeto esboçado.
Algumas vezes um método esboçado deveria retornar valores diferentes dependendo de uma lista predefinida de argu-
mentos. Você pode usar returnValueMap() para criar um mapa que associa argumentos com valores de retorno
Quando a chamada ao método esboçado deve retornar um valor calculado em vez de um fixo (veja returnValue())
todo esboçado retorne o resultado da função ou método callback. Veja Example 9.7 para ter um exemplo.
Uma alternativa mais simples para configurar um método callback pode ser especificar uma lista de valores de retorno
desejados. Você pode fazer isso com o método onConsecutiveCalls(). Veja Example 9.8 para ter um exemplo.
Example 9.8: Esboçando uma chamada de método para retornar uma lista de valores na ordem especificada
Em vez de retornar um valor, um método esboçado também pode causar uma exceção. Example 9.9 mostra como usar
Alternativamente, você mesmo pode escrever um esboço enquanto melhora o design. Recursos amplamente utilizados
são acessados através de uma única fachada, então você pode substituir facilmente o recurso pelo esboço. Por exemplo,
em vez de ter chamadas diretas ao banco de dados espalhadas pelo código, você tem um único objeto Database que
implementa a interface IDatabase. Então, você pode criar um esboço de implementação da IDatabase e usá-la
em seus testes. Você pode até criar uma opção para executar os testes com o esboço do banco de dados ou com o
banco de dados real, então você pode usar seus testes tanto para testes locais durante o desenvolvimento quanto para
Funcionalidades que precisam ser esboçadas tendem a se agrupar no mesmo objeto, aumentando a coesão. Por apre-
sentar a funcionalidade com uma interface única e coerente, você reduz o acoplamento com o resto do sistema.
A prática de substituir um objeto por um dublê de teste que verifica expectativas, por exemplo asseverando que um
Você pode usar um objeto falso “como um ponto de observação que é usado para verificar as saídas indiretas do SST