Hi Gabe,
No NSubstitute can't do this with constructors. The standard approach I've seen is to use a factory interface or func.
For example:
var factory = Substitute.For<Func<Arg1, Arg2, MyClass>>();
...
factory.Received().Invoke(expectedArg1, expectedArg2);
// Or
var factory = Substitute.For<IMyClassFactory>();
...
factory.Received().Create(expectedArg1, expectedArg2);
This has the downside of making the code a more complex though.
The other thing to consider is that what the object does is probably more important that what it was created with. So rather than testing the object was created with an array of `[10, 20, 30]`, you could assert that `myObj.GetIds()` returns `[10, 20, 30]` instead (i.e. the value it was constructed with results in the correct object behaviour).
Regards,
David
PS: `.Received()` is usually used to check values a method is called with, although sometimes `Arg.Do` is used if you want to do more complex assertions on values (as NSub is currently a bit limited in what it provides there).