gpt4 book ai didi

c# - 在 .NET 的 Fluent Assertions 中检查 ShouldThrow Exception.Data

转载 作者:太空狗 更新时间:2023-10-30 00:30:36 25 4
gpt4 key购买 nike

好的,我正在运行单元测试以查看 Exception.Data 属性是否包含针对特定命名键的特定值。

Exception.Data 是 IDictionary 类型。 IDictionary 只有 2 个重载,我看不到验证字典中内容的方法。

我有以下抛出异常的代码:

public class MyClass
{
public void ThrowMyException()
{
throw new MyException();
}
}

public class MyException : Exception
{
public MyException()
{
this.Data.Add("MyKey1", 212);
this.Data.Add("MyKey2", 2121);
}
}

然后进行测试以尝试验证 MyKey1 = 212 和 MyKey2 = 2121:

[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
MyClass classUnderTest = new MyClass();

Action test = () =>
{
classUnderTest.ThrowMyException();
};


test.ShouldThrow<MyException>() //.And.Data.Keys.Should().Contain("")

}
}

我想测试数据是否包含值为 212 的 MyKey1 和值为 2121 的 MyKey2。

最佳答案

如果要测试键值对是否存在于非泛型IDictionary中,您需要创建一个DictionaryEntry 对象并检查它是否存在于字典中。

所以在你的情况下它会是这样的:

test.Should.Throw<MyException>().And
.Data.Should().Contain(new DictionaryEntry("MyKey2", 2121));

关于c# - 在 .NET 的 Fluent Assertions 中检查 ShouldThrow Exception.Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34879666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com