Moq - Cómo verificar que un valor de propiedad se establece a través del configurador

Considera esta clase:

public class Content
{      
   public virtual bool IsCheckedOut {get; private set;}
   public virtual void CheckOut()
   {
      IsCheckedOut = true;
   }

   public virtual void CheckIn()
   {
      //Do Nothing for now as demonstrating false positive test.
   }
}

El método de registro es intencionalmente vacío. Ahora tengo algunos métodos de prueba para verificar el estado de llamar a cada método.

[TestMethod]
public void CheckOutSetsCheckedOutStatusToTrue()
{
    Content c = new Content();    
    c.CheckOut();
    Assert.AreEqual(true, c.IsCheckedOut); //Test works as expected
}

[TestMethod]
public void CheckInSetsCheckedOutStatusToFalse()
{
    Content c = new Content();
    c.CheckIn();
    Assert.AreEqual(false, c.IsCheckedOut); //Test does not work as expected
}

La 2da prueba pasa por las razones equivocadas. Entonces, ¿cómo puedo usar el simulacro (moq) para verificar que CheckIn esté configurando la propiedad IsCheckedOut?

Gracias.

EDITAR

Para aclarar: tengo un método llamado CheckIn () cuyo trabajo es establecer el estado de IsCheckedOut en falso.

Verá en mi código de prueba anterior que la Prueba devolverá falso incluso si no configuro el valor de propiedad en falso; Esto se espera, nada mal aquí.

Creo que mi pregunta específicamente es ¿Cómo puedo verificar que el método CheckIn () haya establecido la propiedad IsCheckedOut en false? Esto es lo que yo llamaría verificación de comportamiento.

Creo que algunos de los comentarios sugirieron hacer algo que equivale a una verificación estatal. Si es así, no creo que haya ningún valor en burlarnos de esta parte cuando simplemente podemos usar:

Content c = new Content();    
c.CheckIn();    
Assert.AreEqual(false, c.IsCheckedOut); //State verification

Por supuesto, puedo estar equivocado, así que ayúdame a aclarar estos conceptos :)

Respuestas a la pregunta(5)

Su respuesta a la pregunta