Hi,
Yes, you can create a substitute for an abstract class. You will be able to set specific values for any `abstract` or `virtual` members of the class. The potential problem is that real code can be executed at test time, including:
* constructor logic
* non-virtual members
This may or not be a problem for you, depending on the nature of the real code being executed, and how careful you are in calling virtual/non-virtual members during your tests. The other issue is that if you do call a `non-virtual` member without realising it (say, a member is changed from `virtual` to non-virtual), NSubstitute can get confused, producing unexpected behaviour or tricky-to-debug errors.
To be safest you can make sure the constructor code doesn't do anything too side-effecty, and make all members `virtual` / `abstract`.
Hope this helps.
Regards,
David