Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FluentAssertions: ShouldBeEquivalentTo vs Should().Be() vs Should().BeEquivalentTo()?

Can anybody summarize differences and usage scope between them?

I read SO articles,

  • ShouldBeEquivalientTo(): ShouldBeEquivalentTo() is intended to be used for comparing complex object graphs rather than the primitive types part of the .NET framework.
  • Should().BeEquivalentTo(): individual items Equals() implementation to verify equivalence and has been around since version 1. The newer ShouldBeEquivalenTo() introduced in FA 2.0 is doing an in-depth structural comparison and also reporting on any differences.
  • Should().Be(): cannot find.

In my humble understanding, ShouldBeEquivalientTo() and Should().BeEquivalentTo() work similar if Should().BeEquivalentTo() does in-depth comparison.

like image 591
Youngjae Avatar asked Sep 19 '14 02:09

Youngjae


1 Answers

I agree this is confusing. Should().BeEquivalentTo() should actually be called Should().EqualInAnyOrder() or something like that. As you said, it uses the Equals implementation of the involved objects to see if all of the ones in the expected collection appear in the actual collection, regardless of order. I'll need to fix that for the next major version.

like image 182
Dennis Doomen Avatar answered Oct 20 '22 01:10

Dennis Doomen