csharp / expert
Snippet
Abhängigkeitsisolierung durch Methoden-Injektion
Unit-Testing auf Expertenniveau verlässt sich oft auf 'Pure Functions' oder Dependency Injection. Das direkte Übergeben eines Interfaces an eine Methode (Method Injection) ermöglicht eine perfekte Isolierung während des Testens ohne den Overhead schwerer Mocking-Frameworks.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
public interface ISystemClock { DateTime Now { get; } }public class DiscountService {public decimal Calculate(decimal price, ISystemClock clock) {// Injecting the interface directly into the method for maximum testabilityreturn clock.Now.DayOfWeek == DayOfWeek.Friday ? price * 0.9m : price;}}// Testing: service.Calculate(100, new MockClock(DayOfWeek.Friday));
Erklärung
1
ISystemClock clock
Abstrahiert die volatile Abhängigkeit (Systemzeit), um die Logik deterministisch zu machen.
2
price * 0.9m
Verwendet das Dezimal-Literal-Suffix 'm', um hochpräzise Finanzberechnungen zu gewährleisten.