Код: Выделить всё
public async Task GetQueryAsync(string query, bool isToBeValidated = true) where T : IEndPointResponse
{
ArgumentNullException.ThrowIfNullOrEmpty(query);
ArgumentNullException.ThrowIfNullOrWhiteSpace(query);
ArgumentNullException.ThrowIfNull(Logger);
Код: Выделить всё
public async Task GetQueryAsync(string query, bool isToBeValidated = true) where T : IEndPointResponse
{
ArgumentException.ThrowIfNullOrEmpty(query);
ArgumentException.ThrowIfNullOrWhiteSpace(query);
ArgumentNullException.ThrowIfNull(Logger);
Код: Выделить всё
public async Task GetQueryAsync(string query, bool isToBeValidated = true) where T : IEndPointResponse
{
if (string.IsNullOrEmpty(query) || string.IsNullOrWhiteSpace(query)) throw new ArgumentNullException(nameof(query));
Вот пример, демонстрирующий мою проблему
р>
Код: Выделить всё
[TestFixture]
public class Tests
{
readonly MyClass _testClass = new();
#region Passes due to null being passed in and ArgumentNullException being thrown
[Test]
public void Test_MyMethod_Passes()
{
Assert.Throws(() =>
{
_ = _testClass.Method(null); // passes with ArgumentNullException
});
}
[Test]
public void Test_MyMethodAsync_Passes()
{
Assert.ThrowsAsync(async () => await _testClass.MethodAsync(null).ToListAsync()); // passes with ArgumentNullException
}
#endregion
#region Fails with ArgumentException being returned instead of ArgumentNullException
[TestCase("")]
[TestCase(" ")]
public void Test_MyMethod(string someText)
{
Assert.Throws(() => _testClass.Method(someText)); // fails with ArgumentException not ArgumentNullException
}
[TestCase("")]
[TestCase(" ")]
public void Test_MyMethodAsync_Fails(string someText)
{
Assert.ThrowsAsync(async () => await _testClass.MethodAsync(someText).ToListAsync()); // fails with ArgumentException not ArgumentNullException
}
#endregion
}
public class MyClass
{
public List Method(string? someText)
{
ArgumentNullException.ThrowIfNull(someText);
ArgumentException.ThrowIfNullOrEmpty(someText);
ArgumentException.ThrowIfNullOrWhiteSpace(someText);
var result = new List { "Document1", "Document2" };
return result;
}
public async IAsyncEnumerable MethodAsync(string? someText)
{
ArgumentNullException.ThrowIfNull(someText);
ArgumentException.ThrowIfNullOrEmpty(someText);
ArgumentException.ThrowIfNullOrWhiteSpace(someText);
// Simulate async data fetching
await Task.Delay(100);
yield return "Document1";
yield return "Document2";
}
}
Если мне нужно исключение ArgumentNullException, мне нужно использовать ArgumentNulLException.ThrowIfNullOrEmpty(someText), иначе я получаю ArgumentException.
Подробнее здесь: https://stackoverflow.com/questions/790 ... mptystring
Мобильная версия