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