Moq - Как проверить, что значение свойства установлено через установщик

Рассмотрим этот класс:

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.
   }
}

Метод Checkin намеренно пуст. Теперь у меня есть несколько тестовых методов для проверки статуса вызова каждого метода.

[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
}

2-й тест проходит по неправильным причинам. Итак, как я могу использовать mocking (moq), чтобы убедиться, что CheckIn устанавливает свойство IsCheckedOut?

Благодарю.

РЕДАКТИРОВАТЬ

Чтобы уточнить: у меня есть метод с именем CheckIn (), работа которого заключается в том, чтобы установить для состояния IsCheckedOut значение false.

В приведенном выше коде теста вы увидите, что Test вернет false, даже если я не установил значение свойства в false; Это ожидается, ничего страшного здесь.

Я думаю, что мой вопрос, в частности, как я могу убедиться, что метод CheckIn () установил для свойства IsCheckedOut значение false? Это то, что я бы назвал поведенческой проверкой.

Я полагаю, что некоторые комментарии предложили сделать что-то, что равносильно государственной проверке? Если так, то я неМы не верим, что есть какая-то ценность в насмешках над этой частью, когда мы можем просто использовать:

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

Конечно, я могу ошибаться, поэтому, пожалуйста, помогите мне прояснить эти понятия :)

Ответы на вопрос(5)

Ваш ответ на вопрос