Sobes.tech
Junior — Middle

Quais padrões de projeto contribuem para melhorar a testabilidade do código?

sobes.tech IA

Resposta da IA

Para melhorar a testabilidade do código em iOS, frequentemente utilizam-se os seguintes padrões de projeto:

  • Injeção de Dependências: permite passar dependências para os objetos de fora, o que facilita a substituição de componentes reais por mocks ou stubs nos testes.

  • Fachada: fornece uma interface simples a um subsistema complexo, facilitando os testes ao esconder detalhes de implementação.

  • Observador: ajuda a separar a lógica de atualização da interface da lógica de negócio, o que simplifica o teste de componentes individuais.

  • Estratégia: permite alterar algoritmos em tempo de execução, útil para substituir lógica nos testes.

  • Construtor: simplifica a criação de objetos complexos, facilitando a preparação de dados de teste.

Exemplo de injeção de dependências:

protocol NetworkService {
    func fetchData(completion: (Data?) -> Void)
}

class RealNetworkService: NetworkService {
    func fetchData(completion: (Data?) -> Void) {
        // Carregamento real de dados
    }
}

class ViewModel {
    private let networkService: NetworkService

    init(networkService: NetworkService) {
        self.networkService = networkService
    }

    func load() {
        networkService.fetchData { data in
            // processamento de dados
        }
    }
}

Nos testes, pode-se passar um serviço mock, tornando o código facilmente testável.