Я создаю два объекта одного типа в интеграционном тесте, но пытаюсь исключить автоинкрементные элементы, сгенерированные при создании объекта.
Я успешно исключаю свойства RecordId и Number, но проверка эквивалентности не выполняется наИдентификатор собственности.Свойства RecordId и number наследуются от абстрактного класса, но Id отличается тем, что это абстрактное свойство, унаследованное от абстрактного класса, который затем переопределяется.
Свойство Id является свойством абстрактной строки и доступно только для чтения..
//CreateJob creates indentical jobs, but with autoincremented id, number and recordid
Job job1 = CreateJob();
Job job2 = CreateJob();
job1.Should().BeEquivalentTo(job2, config => config
.Excluding(o => o.RecordId)
.Excluding(o => o.Id)
.Excluding(o => o.Number)
);
Сообщение: ожидаемый идентификатор элемента будет «45», но «46» отличается около «6» (индекс 1).
С конфигурацией: - Использовать объявленныйтипы и члены
- Сравнение перечислений по значению
- Исключение члена root.RecordId
- Исключение члена root.Id
- Исключение члена root.Number
- Соответствовать элементу по имени (или выбрасывать)
- Без автоматического преобразования.
- Строго соблюдать порядок элементов в байтовых массивах
Я также попытался запустить с параметром WithTracing (), но он не предоставил никакой информации о рассматриваемом свойстве.
Я прочитал документацию и не нашел ничего, что указывало бы на исключение абстрактного или виртуального свойстваЭто не должно быть возможно, я не прав?
Я пробовал это на версии 5.5.0 и 5.5.3, с идентичными результатами.
РЕДАКТИРОВАТЬ:
Iпроверил и дважды проверил, что ни класс, ни наследуемые им классы не имеют равных.