以 Span 作为参数抛出异常的测试方法
Test method which throws an exception as has Span as a parameter
我想用 NUnit 的 Assert.Throws<>
测试一个方法。此方法的参数中有 Span
。典型的方法类似于下面的代码:
[Test]
public void ShouldThrowExceptionIfSomething()
{
// GIVEN
var byteArray = ...;
var mySpan = byteArray.AsSpan();
// WHEN-THEN
Assert.Throws<ArgumentException>(() => Foo.DoSomethingWithSpan(mySpan));
}
不幸的是,这段代码没有编译错误:
[CS8175] Cannot use ref local 'mySpan' inside an anonymous method,
lambda expression, or query expression
我很感激任何关于测试这些方法的建议。
跨度是仅堆栈类型,不能被 lambda 捕获。
您需要在 lambda 中获取跨度:
var byteArray = ...;
Assert.Throws<ArgumentException>(() => Foo.DoSomethingWithSpan(byteArray.AsSpan()));
我想用 NUnit 的 Assert.Throws<>
测试一个方法。此方法的参数中有 Span
。典型的方法类似于下面的代码:
[Test]
public void ShouldThrowExceptionIfSomething()
{
// GIVEN
var byteArray = ...;
var mySpan = byteArray.AsSpan();
// WHEN-THEN
Assert.Throws<ArgumentException>(() => Foo.DoSomethingWithSpan(mySpan));
}
不幸的是,这段代码没有编译错误:
[CS8175] Cannot use ref local 'mySpan' inside an anonymous method, lambda expression, or query expression
我很感激任何关于测试这些方法的建议。
跨度是仅堆栈类型,不能被 lambda 捕获。
您需要在 lambda 中获取跨度:
var byteArray = ...;
Assert.Throws<ArgumentException>(() => Foo.DoSomethingWithSpan(byteArray.AsSpan()));