Not a huge post, but this has tripped me up several times, and sent me down some quite deep rabbit holes.
On to the story…
I once had a check to received calls like this:
var myData = Substitute.For<IData>();
. . .
myData
.Add(Arg.Is<MyEntity>(a =>
a.Active == true
&& a.Field1 == 1
&& a.Field2 == 42))
.Received(1);
And I was getting the error:
NSubstitute extension methods like .Received() can only be called on objects created using Substitute.For() and related methods
I was confident that I had declared it correctly, a few lines above… I could, in fact see that I had declared it correctly. As my brain slowly dribbled from my nose, I did a quick search on the web; and found a solitary article that suggested I might have confused the Received and method calls; the correct syntax being:
myData
.Received(1)
.Add(Arg.Is<MyEntity>(a =>
a.Active == true
&& a.Field1 == 1
&& a.Field2 == 42));
Hopefully, now that I’ve doubled the available resources available to people finding this error, it will plague me less in compensation.