我想用NUnit的Assert.Throws<>
测试一个方法。该方法的参数中包含Span
。一种典型的方法类似于下面的代码:
[Test]
public void ShouldThrowExceptionIfSomething()
{
// GIVEN
var byteArray = ...;
var mySpan = byteArray.AsSpan();
// WHEN-THEN
Assert.Throws<ArgumentException>(() => Foo.DoSomethingWithSpan(mySpan));
}
不幸的是,此代码无法编译并显示错误:
[CS8175]无法在匿名方法内使用引用本地'mySpan',lambda表达式或查询表达式
我感谢有关测试这些方法的任何建议。
跨度是仅堆栈类型,lambda无法捕获。
您需要将跨度放入lambda中:
var byteArray = ...;
Assert.Throws<ArgumentException>(() => Foo.DoSomethingWithSpan(byteArray.AsSpan());