Как заставить производные классы переопределить свойство только для получения, возвращая один и тот же экземпляр для кажC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как заставить производные классы переопределить свойство только для получения, возвращая один и тот же экземпляр для каж

Сообщение Anonymous »

У меня есть тривиальная библиотека, которую нужно протестировать.

Код: Выделить всё

public abstract class Base
{
public bool IsDone { get; set; } = false;
public abstract void Do();
}
public sealed class Derived : Base
{
public override void Do()
{
IsDone = true;
}
}
Тест становится зеленым только в том случае, если вызов переопределенной функции Do() делает IsDone истинным.
< pre class="lang-cs Prettyprint-override">

Код: Выделить всё

public abstract class BaseTest
{
protected abstract Base Sut { get; } // must return the same instance for every invocations, but how?

[Fact]
public  void IsDone_Should_Be_True()
{
Sut.Do();
Assert.True(Sut.IsDone);
}
}
Правильные производные тесты

Код: Выделить всё

public class DerivedTest_CorrectlyImplemented_1 : BaseTest
{
private readonly Derived d = new Derived();
protected override Base Sut => d;
}

public class DerivedTest_CorrectlyImplemented_2 : BaseTest
{
protected override Base Sut { get; } = new Derived();
}
Неверный производный тест

Код: Выделить всё

public class DerivedTest_WronglyImplemented : BaseTest
{
protected override Base Sut => new Derived();
}
Вопрос
Как мне спроектировать BaseTest так, чтобы DerivedTest не мог быть неправильно реализован (возвращая разные экземпляры для каждого получить вызов)?


Подробнее здесь: https://stackoverflow.com/questions/790 ... ing-the-sa
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»