FluentAssertions Throw() 未列出使用
Posted
技术标签:
【中文标题】FluentAssertions Throw() 未列出使用【英文标题】:FluentAssertions Throw() not listed to use 【发布时间】:2019-04-11 09:56:14 【问题描述】:我正在将 FluentAssertions 与 NUnit 一起使用,并且我意识到 Throw() 方法和其他相关方法并未列出供我使用。我是否必须安装任何其他软件包才能访问此方法?
我正在使用由 NuGet 安装的最新版本 5.4.2。
【问题讨论】:
你的意思是Should().Throw()
还是Assert.Throws()
?
应该().Throw()
【参考方案1】:
文档并没有说得很清楚,但Should().Throw()
必须应用于Action(或者,正如@ArturKrajewski 在下面的评论中指出的那样,@987654323 @ 和 async
调用):
Action test = () => throw new InvalidOperationException();
test.Should().Throw<InvalidOperationException>();
所以测试可能如下所示:
public class AssertThrows_ExampleTests
[Test]
public void Should_Throw_Action()
var classToTest = new TestClass();
// Action for sync call
Action action = () => classToTest.MethodToTest();
action.Should().Throw<InvalidOperationException>();
[Test]
public void Should_Throw_Action_Async()
var classToTest = new TestClass();
// Func<Task> required here for async call
Func<Task> func = async () => await classToTest.MethodToTestAsync();
func.Should().Throw<InvalidOperationException>();
private class TestClass
public void MethodToTest()
throw new InvalidOperationException();
public async Task MethodToTestAsync()
throw new InvalidOperationException();
【讨论】:
从 5.5.0 开始,Func<T>
也支持Should().Throw()
和类似的断言。此外,还支持 Func<Task>
和 Func<Task<T>>
的异步方案。以上是关于FluentAssertions Throw() 未列出使用的主要内容,如果未能解决你的问题,请参考以下文章
FluentAssertions 是不是支持字典的 WithStrictOrdering?