我有两个相同类型的对象,类型有一个字符串字段,在第一个对象中值为null,在第二个对象中值为"",如何强制流畅的assesrtions假设这是正确的?
Assesrtion本身:
callResult.ShouldBeEquivalentTo(centreResponse,
opt => opt.Excluding(r => r.DateOpen));
Run Code Online (Sandbox Code Playgroud)
这里引发异常,声明期望值为null,真实值为""(反之亦然)
我有一本类型的字典Dictionary<string, object>,我正在尝试使用 Fluent Assertions 进行断言。我需要检查它是否包含名为“iss”的键和值“ABC”。我需要断言“值”字段而不考虑这种情况。支持吗?
我有几个实现 IEvent 的事件类。为了检查实际事件与我使用的预期事件
actualEvent.ShouldBeEquivalentTo(expectedEvent,opt => opt.RespectingRuntimeTypes()
.Excluding(e => e.DateCreated));
Run Code Online (Sandbox Code Playgroud)
这些事件有一个 DateCreated 属性,我忽略该属性,因为实际事件和预期事件是在不同时间创建的。
如何检查预期事件在实际事件列表中是否至少存在一次?
我想做以下事情;
actualEvents.Should().Contain(expectedEvent,opt => opt.RespectingRuntimeTypes()
.Excluding(e => e.DateCreated));
Run Code Online (Sandbox Code Playgroud)
但这是不可能的。
这可以在流畅的断言中完成吗?
如何比较具有名称相同但类型不同的属性的对象?
public class A
{
public Guid Id { get; set; }
}
public class B
{
public string Id { get; set; }
}
public static B Map(A a){
return new B { Id = a.Id.ToString() };
}
Run Code Online (Sandbox Code Playgroud)
版本 1:
void Main()
{
A a = new A { Id = Guid.NewGuid() };
B b = Map(a);
b.Should().BeEquivalentTo(a);
}
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误:
AssertionFailedException:预期成员 ID 为 {ff73e7c7-21f0-4f45-85fa-f26cd1ecafd0},但发现“{ff73e7c7-21f0-4f45-85fa-f26cd1ecafd0}”。
该文档建议使用等效比较行为可以实现自定义属性断言规则
版本 2:
void Main()
{
A a = new A { Id …Run Code Online (Sandbox Code Playgroud) 我正在将 FluentAssertions 与 NUnit 一起使用,但我意识到 Throw() 方法和其他相关方法并未列出供我使用。我是否必须安装任何其他软件包才能访问此方法?
我使用的是 NuGet 安装的最新版本 5.4.2。
我正在使用 XUnit 来测试我的 ASP.NET Core 2.2 项目。
与此同时,我在测试项目中有 FluentAssertions。
我想要做的是测试我的 MediatR 处理程序。
在这个处理程序中,我有 API 调用。
我已经阅读了文章,似乎我需要先设置fixture,但我发现代码并不容易让我遵循。
我的处理程序看起来像:
public class GetCatsHandler : IRequestHandler<GetCatsQuery, GetCatsResponse>
{
private readonly IPeopleService _peopleService;
public GetCatsHandler(IPeopleService peopleService)
{
_peopleService = peopleService;
}
public async Task<GetCatsResponse> Handle(GetCatsQuery request, CancellationToken cancellationToken)
{
var apiResponse = await _peopleService.GetPeople();
List<Person> people = apiResponse;
var maleCatsGroup = GetCatsGroup(people, Gender.Male);
var femaleCatsGroup = GetCatsGroup(people, Gender.Female);
var response = new GetCatsResponse()
{
Male = maleCatsGroup,
Female = femaleCatsGroup
};
return response;
}
private …Run Code Online (Sandbox Code Playgroud) 我有一个表单的 xml 文件:
<Level1>
<Level2>
<Level3>
<Level4 attr1 = "123.4" attr2 = ""> </Level4>
</Level3>
</Level2>
<Level1>
Run Code Online (Sandbox Code Playgroud)
我正在使用 XUnit 检查 xml 的结构。
[Fact]
public void Xml_Check()
{
var doc = XDocument.Load("test.xml");
doc.Should().HaveRoot("Level1");
doc.Should().HaveElement("Level2");
doc.Should().HaveElement("Level3"); //Erroring on this line
}
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:预期 XML 文档<Level1>...</Level1>具有带有子“Level3”的根元素,但未找到此类子元素。它试图将 Level3 视为 Level1 而不是 Level2 的孩子。
如何获取Level3并检查Level4中是否存在某些属性?有没有办法检查属性值的类型?
我想知道如何使用 Fluent 断言检查对象是否从另一个类继承?
我知道我可以使用 xUnit 来做到这一点IsAssignableFrom,如下所示:
[Fact]
public void CreateBossEnemy()
{
//arrange
EnemyFactory sut = new EnemyFactory();
//action
var enemy = sut.Create("Zombie King", true);
//assert
Assert.IsAssignableFrom<Enemy>(enemy);
}
Run Code Online (Sandbox Code Playgroud)
IsAssignableFromFluent Assertions的等价物是什么?
我得到了两个具有相同数据的对象,双精度、长字符串,我的问题是在对象 A 中所有字符串都是大写,而在对象 B 中所有字符串都是大写和小写。
objectA.Should.Should().BeEquivalentTo(objectB);
Run Code Online (Sandbox Code Playgroud)
比较失败说
预期成员 stringName 为“Super”,但“SUPER”与“UPER”附近不同
有什么办法可以说我们比较的字符串是否忽略它是全大写的或转换全大写的字符串吗?
我可以运行一个 foreach 循环遍历所有内容并进行转换,但我想知道是否可以将我与流畅断言的比较包括在内。
有什么区别:
subject.Should().Be(expected)subject.Should().Equals(expected)我总是使用Be(),但我现在有一个测试用例,其中Be()给出了不同的结果,然后Equals()。我的测试用例涉及一个结构并将其与该结构的默认值进行比较。
MyStruct subject = new MyStruct("value");
Assert.Equal(default, subject); // xUnit Assert => works
Assert.Equal(default(MyStruct), (object)subject); // xUnit Assert => works
subject.Should().Equals(default); // works
subject.Should().Be(default(MyStruct)); // FAILS!
Run Code Online (Sandbox Code Playgroud)
和Be()是Equal()相同的,这是 Fluent Assertions 中的错误吗?或者他们主张不同的事情?