Тестирование наследующего класса C # - PullRequest
3 голосов
/ 20 марта 2012

У меня есть следующий код в c♯, но я не могу понять, как это проверить; Мне нужно проверить aMethodUnderTest. Я не могу изменить ABaseClass, как это в библиотеке. Но если я хочу проверить AClass, мне нужно установить, что возвращает theThing. У кого-нибудь есть идеи или опыт в тестировании такого типа кода?

public ABaseClass
{
  protected ThingBaseClass theThing {get;}
  public virtual ....
  ...
}


public AClassUnderTest : ABaseClass
{
  public MyThing Thing
  {
    get
    {
      return (MyThing)base.theThing;
    }
  }

  public void aMethedUnderTest()
  {
    Thing.doSomething();
  }
}

Примечание: начальное значение theHhing равно нулю. theThing не имеет публичного сеттера.

Ответы [ 3 ]

1 голос
/ 20 марта 2012

Я думаю, что вы можете создать макет, который наследует ABaseClass, а затем проверить, возвращает ли AClass.Thing тот же результат, что и ABaseClassMock.theThing

0 голосов
/ 20 марта 2012

Вы можете создать макет ABaseClass и установить theThing, используя MOQ (даже если у него нет установщика)

var mock = new Mock<ABaseClass>();
mock.SetupGet(x => x.theThing).Returns(\*Whatever you need*\);
0 голосов
/ 20 марта 2012

Вы можете использовать насмешливые библиотеки, такие как Moles.Таким образом, вы можете установить значение «вещи» из вашего тестового кода.http://research.microsoft.com/en-us/projects/moles/

...