Я новичок в модульном тестировании и довольно запутан в тестировании истинных или ложных результатов, возвращаемых методом, основанным на параметре. В настоящее время я использую NUnit и MoQ, ниже мой код. Тест будет выполняться три раза со значениями A, B, C для каждого времени соответственно.
[Test]
public void IFoo_Return_True_With_A_As_Input([Values("A", "B", "C")]string value){
var mock = new Mock<IFoo>();
// setup
mock.Setup(foo => foo.DoSomething("A")).Returns(true);
// Arrage
Func<string, bool> action = (_) => mock.Object.DoSomething(_);
// Act
bool result = action(value);
// Assert
Assert.That(result, /* ??? */);
}
У меня есть метод, который получает значение через параметр IFoo.DoSomething , и он будет вернуть true , если значение параметра A , в противном случае он вернет false . Я не знаю, как представить этот вид теста в одном тесте.
Я думал, что не могу использовать несколько утверждений (я имею в виду одно утверждение для истины, а другое для ложных), потому что результат будет оцениваться как истинный или ложный в каждом тесте. Я думал, что мог бы использовать TestCase с ExpectedResult ИЛИ Предположим, , прежде чем утверждать ИЛИ написать два теста (один для значения A и другой для других значений), но я хотел бы знать, есть ли у нас какие-либо изощренные способы добиться такого рода теста.
Я ожидаю, что будет пройдено три теста с оценкой true или false, полагаясь на предоставленное значение в одном тесте. Пожалуйста, сообщите мне, если я не иду в правильном направлении по поводу модульного теста.
Настройка макета - это способ, которым я представляю реализацию метода IFoo.DoSomething . Его логика c возвращает true, если значение равно A, и false, если иначе.