0
我有這樣一個類:復位犀牛製品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 2014-12-14 21:25:50
我更新了我的答案和解釋如何保證 – 2014-12-15 11:35:01