Over a million developers have joined DZone.

An NSubstitute Extension Method Pitfall [Snippet]

DZone 's Guide to

An NSubstitute Extension Method Pitfall [Snippet]

In this quick post, a developer goes over a problem that has tripped him up several times that sent him down a few deep rabbit holes, and how to solve it.

· Web Dev Zone ·
Free Resource

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>();


    .Add(Arg.Is<MyEntity>(a =>
        a.Active == true
        && a.Field1 == 1
        && a.Field2 == 42))

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:

    .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.

web dev ,nsubstitute ,methods ,web application development

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}