FluentAssertions Сравните два IQueryables

У меня есть два Iqueryables, которые имеют разные значения. Я хочу использовать FluentAssertions для сравнения элементов в Iqueryable для моих модульных тестов.

У меня есть следующее:

[Fact]
public void TestCompareIQueryables()
{
    // Arrange
    var objects1 = new CustomObject[]
    {
        new CustomObject {
            Code = "Code1",
            Name = "Name1"
        }
    }.AsQueryable();

    var objects2 = new CustomObject []
    {
        new CustomObject {
            Code = "Code2",
            Name = "Name2"
    }
    }.AsQueryable();

    // Assert
    objects1.Should().HaveSameCount(objects2);
    objects1.Should().BeEquivalentTo(objects1);
    objects1.Should().BeEquivalentTo(objects2);
}

Что происходит, когда я запускаю этот факт, так это то, что он проходит, но я ожидаю, что последний метод Should().BeEquivalentTo() завершится ошибкой.

Я что-то упустил, из-за чего тест работает не так, как ожидалось? Как я могу правильно сравнить каждый элемент друг с другом в двух IQueryables?

Любая помощь будет оценена по достоинству!


person Robbert Raats    schedule 20.02.2019    source источник
comment
CustomObject реализует Equals?   -  person Dennis Doomen    schedule 20.02.2019
comment
Какую версию FluentAssertions вы используете? Как реализован CustomObject? Когда я копирую предоставленный вами код и создаю класс CustomObject только с двумя свойствами, он работает, как и ожидалось.   -  person Jonas Nyrup    schedule 20.02.2019
comment
Спасибо за ваши комментарии, тем временем я нашел решение.   -  person Robbert Raats    schedule 21.02.2019


Ответы (1)


Исправление находится в другом вызове от FluentAssertions:

objects1.Should().BeSameAs(objects2);

Это дает ожидаемую ошибку.

person Robbert Raats    schedule 21.02.2019