首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MSTEST中断言集合OrderBy正常工作

在MSTEST中断言集合OrderBy正常工作
EN

Stack Overflow用户
提问于 2021-03-02 16:35:30
回答 1查看 86关注 0票数 0

早上好。我正在编写一个单元测试,以验证我的API处理程序是否正确地对集合进行排序。正如您所看到的,它是模拟的数据,为了测试OrderBy功能,我故意创建测试数据。一旦处理程序返回DTO集合,我希望验证"act“集合是否与我的"expectedDTO”集合的顺序相同。下面是代码:

代码语言:javascript
复制
    [TestMethod]
    public async Task GetByDay_ReturnsDtoList_WhenFound()
    {
        var testData = TestMethodData(); 
        var expectedCalendarDto = ExpectedDto();
        var testCalendar = testData;
        var query = new GetCalendarByDaysQuery();

        _mockCalendarRepo.Setup(m => m.GetItemsAsync(It.IsAny<ISpecification<CalendarDay>>(), null, null))
            .ReturnsAsync(testCalendar);
        var sut = new GetCalendarByDaysHandler(_mockCalendarRepo.Object, _mapper);
        var act = await sut.HandleAsync(query);

        Assert.IsNotNull(act);
        Assert.IsInstanceOfType(act, typeof(IEnumerable<CalendarDto>));
        Assert.AreEqual(expectedCalendarDto, act);
    }

    private GetItemsResult<IEnumerable<CalendarDay>> TestMethodData()
    {
        var testData = new GetItemsResult<IEnumerable<CalendarDay>>();
        testData.ContinuationToken = null;

        testData.Results = new List<CalendarDay>()
        {
            new CalendarDay { Id = "4-5-4|2021-04-01", FiscalYear = 2021, CalendarType = "4-5-4", Quarter = 2, Period = 4, CalendarDate = "2021-04-01", WeekOfYear = 13, DayOfYear = 61, WeekOfPeriod = 1 },
            new CalendarDay { Id = "4-5-4|2021-08-01", FiscalYear = 2021, CalendarType = "4-5-4", Quarter = 3, Period = 8, CalendarDate = "2021-08-01", WeekOfYear = 24, DayOfYear = 121, WeekOfPeriod = 1 },
            new CalendarDay { Id = "4-5-4|2021-01-01", FiscalYear = 2021, CalendarType = "4-5-4", Quarter = 1, Period = 1, CalendarDate = "2021-01-01", WeekOfYear = 1, DayOfYear = 1, WeekOfPeriod = 1 }
        };
        return testData;
    }

    private IEnumerable<CalendarDto> ExpectedDto()
    {
        var testDto = new List<CalendarDto>()
        {
            new CalendarDto {  FiscalYear = 2021, CalendarType = "4-5-4", Quarter = 1, Period = 1, CalendarDate = "2021-01-01", WeekOfYear = 1, DayOfYear = 1, WeekOfPeriod = 1 },
            new CalendarDto {  FiscalYear = 2021, CalendarType = "4-5-4", Quarter = 2, Period = 4, CalendarDate = "2021-04-01", WeekOfYear = 13, DayOfYear = 61, WeekOfPeriod = 1 },
            new CalendarDto {  FiscalYear = 2021, CalendarType = "4-5-4", Quarter = 3, Period = 8, CalendarDate = "2021-08-01", WeekOfYear = 24, DayOfYear = 121, WeekOfPeriod = 1 }
        };
        return testDto;
    }

目前,在试图比较这两个集合时,测试没有说它们是不平等的。

代码语言:javascript
复制
Assert.AreEqual failed. Expected:<System.Collections.Generic.List`1[cscentcalendar.infrastructure.DTOs.CalendarDto]>. Actual:<System.Collections.Generic.List`1[cscentcalendar.infrastructure.DTOs.CalendarDto]>. 

不知道我做错了什么。如能提供任何协助,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-02 19:19:00

我相信我通过使用fluent断言和添加下面的代码行来测试这两个集合来解决这个问题。如果这是不正确的,请告诉我。再次感谢!

代码语言:javascript
复制
    expectedCalendarDto.Should().BeEquivalentTo(act);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66443401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档