Dart:
Escrevendo testes
Como fazer:
Em Dart, o pacote test
é comumente usado para escrever testes. Primeiro, adicione o pacote test
ao seu pubspec.yaml
:
dev_dependencies:
test: ^1.0.0
Depois, escreva um teste para uma função simples. Suponha que você tenha uma função que adiciona dois números:
int add(int a, int b) {
return a + b;
}
Em seguida, crie um arquivo chamado add_test.dart
no diretório test
e escreva seu caso de teste:
import 'package:test/test.dart';
import '../lib/add.dart'; // Assuma que sua função `add` está em lib/add.dart
void main() {
test('adiciona dois números', () {
var esperado = 3;
expect(add(1, 2), equals(esperado));
});
}
Para executar os testes, use o comando Dart:
$ dart test
A saída de exemplo pode se parecer com:
00:01 +1: Todos os testes passaram!
Usando uma biblioteca de terceiros: Mockito para simulação
Para testar código que possui dependências complexas, você pode usar Mockito para criar objetos simulados. Primeiro, adicione Mockito ao seu pubspec.yaml
:
dev_dependencies:
mockito: ^5.0.0
Supondo que você tenha uma classe UserRepository
que busca dados de usuários, e você deseja testar um UserService
que depende de UserRepository
sem acessar um banco de dados real:
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import 'package:seu_projeto/user_repository.dart';
import 'package:seu_projeto/user_service.dart';
// Criar uma classe Mock usando Mockito
class MockUserRepository extends Mock implements UserRepository {}
void main() {
group('Testes de UserService', () {
test('Busca usuário com sucesso', () {
// Criar instância mock
final mockUserRepository = MockUserRepository();
final userService = UserService(mockUserRepository);
// Configurar comportamento mock
when(mockUserRepository.fetchUser(1)).thenReturn(User(id: 1, name: 'Usuário Teste'));
// Afirmar que o método mockado é chamado com os argumentos esperados
expect(userService.getUserName(1), 'Usuário Teste');
verify(mockUserRepository.fetchUser(1)).called(1);
});
});
}
Executar este teste confirma que o UserService
interage corretamente com UserRepository
, usando a simulação para imitar as interações reais de maneira controlada.