Я новичок в тестировании и сейчас учусь использовать xUnit.
Я написал приведенный ниже тест, который работает и дает результаты, которые я ищу, но я думаю, что я смогу сделать его чище, как при использовании TestCase в nUnit. Поэтому я пытаюсь использовать InlineData, который, как я понимаю, называется xUnits "TestCase", но я не знаю, как это сделать.
При попытке настроить его, как показано ниже (см. Строки с комментариями), затем он говорит мне
[Theory]
// [InlineData("")] // wanna use InlineData just to make the code/test cleaner.
// [InlineData(null)]
public async Task Get_Return_Something(
MyController sut)
{
var result1 = await sut.Get(""); // when placing "sut" as param, I get: cannot convert from MyController to string.
var result2 = await sut.Get(null); // same applies here..
result1.ShouldBeOfType(typeof(OkObjectResult));
result2.ShouldBeOfType(typeof(BadRequestObjectResult));
}
Мой вопрос - как мне реализовать InlineData, чтобы тест был чище. И возможно ли вообще, когда у меня есть контроллер в качестве параметра?
Просто чтобы прояснить это -> должен ли быть способ использовать синтаксис из nUnit:
// something like this
[TestCase("", OkObjectResult)]
[TestCase(null, BadRequestObjectResult)]
public async Task Get_Return_Something(MyController sut, param1, param2)
{
var result = await.sut.Get(param1);
result.ShouldBeOfType(typeof(param2));
}
Может быть, nUnitпример неправильный - но я пытаюсь указать, что я ищу, говоря более чистый код. Следуя логике TestCase, я могу легко расширить свой тест до 10-15 различных тестовых случаев. И я слышал, что xUnit делает что-то похожее с InlineData (что, как сказал мне LasseVågsætherKarlsen, было невозможно) - или затем MemberClass или ClassData.