标签: fluent-assertions

如何在流畅的断言中比较null和string.Empty(或"")?

我有两个相同类型的对象,类型有一个字符串字段,在第一个对象中值为null,在第二个对象中值为"",如何强制流畅的assesrtions假设这是正确的?

Assesrtion本身:

callResult.ShouldBeEquivalentTo(centreResponse, 
                                opt => opt.Excluding(r => r.DateOpen));
Run Code Online (Sandbox Code Playgroud)

这里引发异常,声明期望值为null,真实值为""(反之亦然)

c# integration-testing fluent-assertions

3
推荐指数
1
解决办法
2169
查看次数

Fluent Assertions:如何在没有大小写的情况下检查键值对

我有一本类型的字典Dictionary<string, object>,我正在尝试使用 Fluent Assertions 进行断言。我需要检查它是否包含名为“iss”的键和值“ABC”。我需要断言“值”字段而不考虑这种情况。支持吗?

c# fluent-assertions

3
推荐指数
1
解决办法
4974
查看次数

FluentAssertions:检查列表包含对象,不包括属性

我有几个实现 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)

但这是不可能的。

这可以在流畅的断言中完成吗?

.net fluent-assertions

3
推荐指数
1
解决办法
1万
查看次数

FluentAssertions - Should().BeEquivalentTo() 当属性是不同类型时

如何比较具有名称相同但类型不同的属性的对象?

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)

c# unit-testing fluent-assertions

3
推荐指数
1
解决办法
3448
查看次数

FluentAssertions Throw() 未列出使用

我正在将 FluentAssertions 与 NUnit 一起使用,但我意识到 Throw() 方法和其他相关方法并未列出供我使用。我是否必须安装任何其他软件包才能访问此方法?

我使用的是 NuGet 安装的最新版本 5.4.2。

c# nunit fluent-assertions

3
推荐指数
1
解决办法
1159
查看次数

如何使用 FluentAssertions 在 XUnit 中测试 MediatR 处理程序

我正在使用 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)

c# xunit fluent-assertions mediatr asp.net-core

3
推荐指数
1
解决办法
4489
查看次数

xml的流利断言

我有一个表单的 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中是否存在某些属性?有没有办法检查属性值的类型?

c# xml unit-testing xunit fluent-assertions

3
推荐指数
1
解决办法
282
查看次数

如何使用 FluentAssertions 检查对象是否从另一个类继承?

我想知道如何使用 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的等价物是什么?

c# xunit fluent-assertions

3
推荐指数
1
解决办法
380
查看次数

Fluent Assertions BeEquivalentTo 用于匹配字符串中具有大小写差异的混合对象

我得到了两个具有相同数据的对象,双精度、长字符串,我的问题是在对象 A 中所有字符串都是大写,而在对象 B 中所有字符串都是大写和小写。

objectA.Should.Should().BeEquivalentTo(objectB);
Run Code Online (Sandbox Code Playgroud)

比较失败说

预期成员 stringName 为“Super”,但“SUPER”与“UPER”附近不同

有什么办法可以说我们比较的字符串是否忽略它是全大写的或转换全大写的字符串吗?

我可以运行一个 foreach 循环遍历所有内容并进行转换,但我想知道是否可以将我与流畅断言的比较包括在内。

c# fluent-assertions

3
推荐指数
1
解决办法
1934
查看次数

流畅的断言:Be() 与 Equals()

有什么区别:

  • 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 中的错误吗?或者他们主张不同的事情?

c# unit-testing fluent-assertions

3
推荐指数
1
解决办法
6611
查看次数