Aprenda a criar stubs de implementações de clientes reais para injetar um simulacro para teste de unidade. Usar um cliente simulado com as Google Cloud bibliotecas de cliente para Rust permite escrever testes de unidade controlados e confiáveis que não fazem chamadas de rede nem geram cobranças.
Dependências
Há várias estruturas de simulação disponíveis para Rust. Este guia usa
mockall. Adicione-o como uma dependência de desenvolvimento:
cargo add --dev mockall
Além disso, este guia usa o cliente Speech para facilitar o acompanhamento dos
exemplos, mas esses conceitos se aplicam a todos os clientes.
Adicione as dependências necessárias ao arquivo Cargo.toml:
cargo add google-cloud-speech-v2 google-cloud-lro
Simular um cliente
Para testar o código com um cliente simulado, defina uma struct simulada, configure o comportamento esperado para o cenário de teste e injete esse simulacro na lógica do aplicativo. O exemplo a seguir demonstra esse fluxo de trabalho.
Primeiro, adicione instruções use para simplificar o código:
Suponha que o aplicativo tenha uma função que usa o cliente Speech para chamar GetRecognizer, definindo o campo name da solicitação e processando a resposta do servidor.
É possível testar como o aplicativo processa diferentes respostas do serviço.
Em seguida, defina a struct simulada. Essa struct implementa a
speech::stub::Speech característica.
Crie uma instância do simulacro. Observe que a
mockall::mock! macro anexa um Mock prefixo ao nome da
struct definida anteriormente.
Defina as expectativas no simulacro. Por exemplo, espere que o código chame GetRecognizer com um nome específico e simule uma resposta bem-sucedida do serviço.
Crie um cliente Speech usando o simulacro:
Como chamar a função:
Verifique os resultados:
Simular erros
A simulação de erros é semelhante à simulação de sucessos. Para simular um erro, modifique o resultado retornado pelo simulacro.
Um cliente criado com from_stub() não tem um loop de repetição interno. Ele retorna todos os erros do stub diretamente para o aplicativo.
Próximas etapas
Para conferir o código completo deste guia, consulte o arquivo de origem no google-cloud-rust repositório no GitHub (em inglês).