Дайте следующую функцию:Должен ли я тестировать несколько (разных) входных значений функции?
public class UnderTest
{
public bool Foo(Bar input)
{
if(input.State != State.Paid)
throw new Exception();
return true;
}
}
Что лучший способ проверить input.State != State.Paid
, учитывая, что State
является enum
? Я придумал следующее. Однако это не будет ловить, если добавлено новое значение enum. Есть ли лучший способ проверить это или я должен только заботиться об одном тесте?
[Theory]
[InlineData(State.New)]
[InlineData(State.Cancelled)]
[InlineData(State.Complete)]
public void NotPaidBar_ThrowsException(State state)
{
// Arrange
var bar = new Bar()
{
State = state
};
var underTest = new UnderTest();
// Act
Action result =() => underTest.Foo(bar);
// Assert
result
.ShouldThrow<Exception>();
}
Вы можете создать 'интерфейс IState' с' BOOL UnderTest () 'определение метода. Таким образом, все реализации состояния должны будут реализовать «UnderTest». – Oliver