Метод тестирования, который выдает исключение, так как имеет Span в качестве параметра - PullRequest
1 голос
/ 26 мая 2020

Я хочу протестировать метод с помощью Assert.Throws<> NUnit. В параметрах этого метода указано Span. Типичный подход аналогичен приведенному ниже коду:

[Test]
public void ShouldThrowExceptionIfSomething()
{
  // GIVEN
  var byteArray = ...;
  var mySpan = byteArray.AsSpan();

  // WHEN-THEN
  Assert.Throws<ArgumentException>(() => Foo.DoSomethingWithSpan(mySpan));
}

К сожалению, этот код не компилируется с ошибкой:

[CS8175] Невозможно использовать ref local 'mySpan' внутри анонимный метод, лямбда-выражение или выражение запроса

Я признателен за любые предложения по тестированию таких методов.

1 Ответ

1 голос
/ 26 мая 2020

Span являются типами только для стека и не могут быть захвачены лямбдами.

Вам нужно будет получить Span внутри лямбда:

var byteArray = ...;
Assert.Throws<ArgumentException>(() => Foo.DoSomethingWithSpan(byteArray.AsSpan()));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...