Conversation
| actualTsar.Should().BeEquivalentTo(expectedTsar, options => | ||
| options.Excluding(person => person.Id) | ||
| .Excluding(person => person.Parent.Id) | ||
| ); |
There was a problem hiding this comment.
А person.Parent.Parent.Id? :) и тд
| // Недостатки подхода CustomEquality по сравнению с решением выше в том что | ||
| // 1. Используется проверка на истинность AreEqual, в случае ошибки покажет только то что AreEqual вернуло False | ||
| // 2. Кастомный Ассерт ниже нерасширяем, при попытке добавить новое поле в класс придётся переписывать его | ||
| // 3. Читаемость гораздо хуже, в ассерте могла быть пропущена проверка поля и внешне он выглядел бы также, | ||
| // а значит чтобы понять что пытаемся проверить пришлось бы читать весь код | ||
| // 4. Код выше короче |
There was a problem hiding this comment.
Давай еще подумаем что может быть не так именно с реализацией AreEquals.
| // Недостатки подхода CustomEquality по сравнению с решением выше в том что | ||
| // 1. Используется проверка на истинность AreEqual, в случае ошибки покажет только то что AreEqual вернуло False | ||
| // 2. Кастомный Ассерт ниже нерасширяем, при попытке добавить новое поле в класс придётся переписывать его | ||
| // 3. Читаемость гораздо хуже, в ассерте могла быть пропущена проверка поля и внешне он выглядел бы также, | ||
| // а значит чтобы понять что пытаемся проверить пришлось бы читать весь код | ||
| // 4. Код выше короче |
There was a problem hiding this comment.
Сомнительное преимущество :) Попробуй перефразировать
| @@ -8,24 +9,143 @@ namespace HomeExercise.Tasks.NumberValidator; | |||
| public class NumberValidatorTests | |||
There was a problem hiding this comment.
Очень много похожего кода. Подумай как соблюсти DRY
There was a problem hiding this comment.
Из названий методов непонятно что именно мы тестируем.
Давай использовать паттерн названий Method_ShouldReturn_When
Например, IsValidNumber_ShouldReturnTrue_WhenZero
There was a problem hiding this comment.
Давай еще тестов накинем, пока маловато получается. Например ".", ",1", "\n".
Это же строчка, значений можно много придумать.
| act.Should().Throw<ArgumentException>(); | ||
| } | ||
| [Test] | ||
| public void ThrowsArgumentException_WhenScaleMoreOrEqualToPrecision() |
There was a problem hiding this comment.
Так тесты лучше не смешивать. У тебя есть отельный случай, когда scale == precision, и отдельный случай, когда scale > precision.
Представь, что у тебя сломалась логика валидации для scale > precision. Твой тест это не отловит.
| public void ThrowsArgumentException_WhenPrecisionNegative() | ||
| { | ||
| Assert.Throws<ArgumentException>(() => new NumberValidator(-1, 2, true)); | ||
| Assert.DoesNotThrow(() => new NumberValidator(1, 0, true)); | ||
| Assert.Throws<ArgumentException>(() => new NumberValidator(-1, 2, false)); | ||
| Assert.DoesNotThrow(() => new NumberValidator(1, 0, true)); | ||
| Action act = () => new NumberValidator(-1, 2); | ||
| act.Should().Throw<ArgumentException>(); | ||
| } | ||
| [Test] | ||
| public void ThrowsArgumentException_WhenScaleMoreOrEqualToPrecision() | ||
| { | ||
| Action act = () => new NumberValidator(2, 2); | ||
| act.Should().Throw<ArgumentException>(); | ||
| } |
There was a problem hiding this comment.
Тесты на валидацию в конструкторе не покрывают условия
| public void Creates_NumberValidator() | ||
| { | ||
| Action act = () => new NumberValidator(1, 0, true); | ||
| act.Should().NotThrow(); | ||
| } |
There was a problem hiding this comment.
А надо ли это тестировать? У тебя буквально все тесты создают NumberValidator с какими-то значениями и не падают.
No description provided.