MSpec doesn't "reset" static state between executing contexts. It obeys the behavior you know from normal static variables, i.e. they don't get reinitialized for the time the application (i.e. test run) is running unless you do that manually. It's best to initialize all fields in the Establish
of each context.
Another option is to put an extra Establish
on your base class, but that will hide important information from your context - you would have to navigate to the base class to see that a field was initialized with a certain value. But DRY doesn't apply to tests in general: I prefer to have base classes with protected static
methods that I call from derived contexts (see this answer for an example).