### Qual é a finalidade principal dos objetos mock em testes unitários?
> Dica: revise a introdução da página e o slide Por que usar mocks?
- [ ] Realizar testes de integração com o banco real
- [x] Simular o comportamento de dependências externas
- [ ] Medir a performance do código
- [ ] Gerar dados de teste aleatórios
### No cenário do BookService, quais interfaces representam as portas de saída (dependências externas mockáveis)?
> Dica: revise a seção Exercícios práticos: testando BookService e o slide Cenário: portas e casos de uso
- [ ] Book e BookServiceTest
- [x] BookRepository e NotificationService
- [ ] RegisterBookUseCase e BorrowBookUseCase
- [ ] BookServiceTest e MockitoExtension
### E quais interfaces representam as portas de entrada (casos de uso)?
> Dica: revise a seção Exercícios práticos: testando BookService e o slide Cenário: portas e casos de uso
- [ ] BookRepository e NotificationService
- [x] RegisterBookUseCase e BorrowBookUseCase
- [ ] Book e BookServiceTest
- [ ] InvalidBookException e BookNotFoundException
### Qual anotação do Mockito cria e injeta instâncias simuladas em uma classe/interface?
> Dica: revise a seção @Mock e o slide @Mock
- [ ] @Spy
- [ ] @InjectMocks
- [x] @Mock
- [ ] @Captor
### O que a anotação @InjectMocks faz no contexto dos testes com Mockito?
> Dica: revise a seção @InjectMocks e o slide @InjectMocks
- [ ] Cria um mock e injeta dependências reais
- [ ] Cria um mock e injeta mocks nas dependências
- [x] Cria uma instância real e injeta mocks nas dependências
- [ ] Cria uma instância real e injeta dependências reais
### No vocabulário do exemplo hexagonal, o que é BookService quando anotado com @InjectMocks?
> Dica: revise o parágrafo sobre o exemplo hexagonal logo após a seção @InjectMocks
- [ ] Uma porta de saída
- [ ] Uma porta de entrada (interface do caso de uso)
- [x] O serviço de aplicação que implementa os casos de uso
- [ ] Um adaptador REST
### Em qual situação você utilizaria a anotação @Spy no exercício do BookRepository?
> Dica: revise a seção Exercício 6: @Spy em um repositório real e o slide @Spy
- [ ] Quando você precisa capturar argumentos de um método
- [x] Quando quer manter o comportamento real de uma implementação em memória e apenas monitorar chamadas
- [ ] Quando você precisa criar um mock totalmente simulado
- [ ] Quando não há nenhuma dependência a ser testada
### Qual anotação é usada para capturar o argumento passado a um método de um mock?
> Dica: revise a seção @Captor e o Exercício 5: @Captor no livro salvo
- [ ] @Spy
- [ ] @InjectMocks
- [ ] @Mock
- [x] @Captor
### No Exercício 5, o que shouldDecrementCopiesWhenBookIsBorrowed verifica com o ArgumentCaptor?
> Dica: revise o Exercício 5: @Captor no livro salvo
- [ ] Que o e-mail do leitor está correto
- [ ] Que o repositório não foi chamado
- [x] Que o Book salvo teve copiesAvailable decrementado em uma unidade
- [ ] Que uma exceção foi lançada
### Qual método é usado no Mockito para definir o comportamento de um método simulado?
> Dica: revise o Exemplo 1 da seção @Mock
- [ ] `verify`
- [x] `when`
- [ ] `assertEquals`
- [ ] `mock`
### Qual método do Mockito verifica se um método de um mock foi chamado com argumentos específicos?
> Dica: revise a seção verify vs. assert
- [ ] `when`
- [ ] `mock`
- [ ] `assertEquals`
- [x] `verify`
### Qual é a diferença entre assert e verify?
> Dica: revise a seção verify vs. assert e o slide de mesmo nome
- [ ] Ambos verificam exatamente a mesma coisa
- [x] assert verifica o resultado retornado; verify verifica a interação com uma dependência
- [ ] assert só funciona com Mockito; verify só funciona com JUnit
- [ ] verify substitui completamente o uso de assert
### No Exercício 7, por que o teste combina assert e verify?
> Dica: revise o Exercício 7: assert e verify juntos
- [ ] Porque um teste só pode ter uma assertiva por vez
- [ ] Porque verify sempre precisa vir antes de assert
- [x] Porque só assert não garante que o leitor foi notificado, e só verify não garante que o retorno está correto
- [ ] Porque assert e verify são sinônimos no Mockito
### Qual é o comportamento padrão de um método de mock sem stub definido?
> Dica: revise o parágrafo após o Exemplo 1 da seção @Mock
- [ ] Lança uma exceção
- [x] Retorna o valor padrão do tipo de retorno (null, 0, false etc.)
- [ ] Retorna sempre `null`, mesmo para tipos primitivos
- [ ] Interrompe a execução do teste