title: Mocking an entity?
body: <p>I've heard somewhere that mocking an entity is a BAD thing, and you should only mock services (even if we're not doing full-blown DDD, but "sorta" DDD).</p>
  
  <p>So, given the following typical story, how do you write a test for it? </p>
  
  <ul>
  <li>If a customer has a Preferred status, she should be notified when Stuff happens.</li>
  </ul>
  
  <p>Preferred status is something dependent on other things, like, the customer has recently purchased 10 Widgets, or his name starts with "A", etc. Anyway, let's suppose we have already implemented this functionality. How do I write a test for the above story? Specifically, I'm interested in how testability requirement would affect my design in this case.</p>
  
  <ol>
  <li>I can use some advanced mock framework (like Isolator) which lets me mock non-virtual properties. No correlation between testability and design, no problem.</li>
  <li>I can make the IsPreferred property virtual and mock it (stub actually). Don't know why, but that feels dirty. See the question at the top of the post. Also, not sure how it improves my design.
  2a. Hide the entity behind the ICustomer interface and mock it. Totally uncool.</li>
  <li>I can make it a read-write property, but that would be a very bad design decision.</li>
  </ol>
  
  <p>How do you handle such stories?</p>