У меня есть класс, как это:Сброс Rhino Mocks AssertWasNotCalled
public class MyClass
{
private MyStruct _someProperty;
public MyStruct SomeProperty
{
set
{
if(StructureChanged(_someProperty, value))
{
_someProperty = value;
OnSomePropertyChanged();
}
}
}
private bool StructureChanged(MyStruct oldValue, MyStruct newValue)
{
// Check if any property of newValue is different from oldValue
// This is a check for semantic equality, not referential equality
}
internal protected virtual OnSomePropertyChanged()
{
// ...
}
}
И тест, как это:
// Arrange
_myClass = MockRepository.GeneratePartialMock<MyClass>();
_myClass.SomeProperty = new MyStruct();
// Act
_myClass.SomeProperty = new MyStruct(); // This is semantically equal to the current value
// Assert
_myClass.AssertWasNotCalled(m => m.OnSomePropertyChanged());
Конечно, тест не потому, что OnSomePropertyChanged вызывается, когда я установить свойство в первый раз. Я хочу установить свойство в первый раз, как-то сбросить значение AssertWasNotCalled, а затем снова установить свойство и убедиться, что OnSomePropertyChanged не вызывается снова. Есть какой-либо способ сделать это?
Но откуда узнать, было ли это вызвано, когда SomeProperty был установлен в первый раз или во второй раз? – ConditionRacer
Я обновил свой ответ с объяснением, как это можно гарантировать –