csharp / intermediate
Snippet
Unit-Testing ermöglichen durch Interface-Entkopplung
Dependency Inversion durch Interfaces ermöglicht es, echte Implementierungen während des Testens durch 'Mocks' zu ersetzen. Dies stellt sicher, dass sich Unit-Tests auf die Klassenlogik konzentrieren und nicht auf externe Abhängigkeiten wie E-Mail-Server.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public interface IEmailService {void Send(string message);}public class UserNotifier {private readonly IEmailService _service;public UserNotifier(IEmailService service) {_service = service;}public void Notify(string text) {if (!string.IsNullOrEmpty(text)) {_service.Send(text);}}}
Erklärung
1
private readonly IEmailService _service;
Speichert einen Verweis auf die Abstraktion statt auf eine konkrete Implementierung.
2
public UserNotifier(IEmailService service)
Injiziert die Abhängigkeit über den Konstruktor (Constructor Injection).