Я пытаюсь создать базовый класс, который наследуется от ReactiveObject. Этот класс должен проверить, изменилось ли какое-либо свойство, включая свойства дальнейшего наследования.
Моя главная проблема в том, что я не могу получить надежные результаты теста! Приведенный тест МОЖЕТ быть зеленым. Запуск его с VS Live Unit Testing, отображает его красным. Перемещение классов из тестового проекта в библиотеку может или не может сделать этот тест зеленым.
Пока что единственный способ сохранить его зеленым - это раскомментировать эту строку в унаследованном классе.
// Changed.Subscribe(Console.WriteLine);
[TestClass]
public class StateBaseTests
{
#region Tests
[TestMethod]
public void State_ChangesToChanged_PropertyChanged()
{
var _item = new MyTest();
_item.Surname = "Testname";
Assert.AreEqual(Statetype.Changed, _item.State);
}
#endregion
#region SubClasses
public enum Statetype
{
Added,
Changed,
Deleted,
Detached,
Unchanged
}
public abstract class StateBase : ReactiveObject
{
protected StateBase()
{
State = Statetype.Unchanged;
Changed.Select(prop => prop.PropertyName)
.Subscribe(UpdateZustand);
}
protected void UpdateZustand(string propertyName)
{
if(State == Statetype.Unchanged)
State = Statetype.Changed;
}
[Reactive]
public Statetype State { get; set; }
}
private class MyTest : StateBase
{
public MyTest()
{
// Changed.Subscribe(Console.WriteLine);
}
[Reactive]
public string Name { get; set; }
[Reactive]
public string Surname { get; set; }
}
}