Perhaps I can give a more detailed explaination.
Initializing instance fields e.g:
private readonly string nullError = "Error";
is actually done when the constructor is called.
something like:
public Base()
{
// Hidden code
nullError = "Error";
}
So if the constuctor is mocked, the field never gets initialized.
:idea: If you want more control over the fields, (e.g. when you want to mock the constructor but set the field), you can use the new
Mocking Fields APIs (since version 4.2.2) to reset the field.