- Следуют ли методы создания расширений для классов принципу open-close?
Технически да, так как в большинстве формальных определений утверждается, что принцип open / closed является "Closed для модификации, но открытой для расширения ". Поскольку методы расширений не модифицируют исходный класс, а только расширяют его, методы расширения соответствуют этому определению.
Как проверить классы, использующие методы расширения?
Как и любой другой тест:
Пример метода расширения:
public static class Extensions
{
public static string ToLowerAndTrim(this string source) => source.Trim().ToLower();
}
Тестовый пример с использованием XUnit:
[Fact]
public void SampleTest()
{
string input = " Hello World ";
string expected = "hello world";
string actual = input.ToLowerAndTrim();
Assert.Equal(expected, actual);
}