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.