接下来两个测试针对HasErrors这个属性和ErrorsChanged事件。
[TestMethod]
1
2
3
4
5
6
|
public void Person_FirstName_Set_HasErrorsIsFalse() { var person = new Person( "Adam" , "Smith" ); person.FirstName = "Bob" ; Assert.IsFalse(person.HasErrors); } |
[TestMethod]
1
2
3
4
5
6
7
|
public void Person_FirstName_Set_ErrorsChanged_Did_Not_Fire() { var person = new Person( "Adam" , "Smith" ); var errorsChangedAssert = new ErrorsChangedEventAssert(person); person.FirstName = "Bob" ; errorsChangedAssert.ExpectNothing(); } |
目前我们有8个测试了,这意味着当我们修改FirstName的属性值,我们要考虑会发生改变的每件事。但是这不算完。我们还需要确保没有别的会被意外改变。理论上说,这意味着更多的断言和相当数量的测试,但是,接下来我们采用取巧的方法,用ChangeAssert方法来替代HasErrors测试。
[TestMethod]
1
2
3
4
5
6
7
|
public void Person_FirstName_Set_Nothing_Unexpected_Changed() { var person = new Person( "Adam" , "Smith" ); var changeAssert = new ChangeAssert(person); person.FirstName = "Bob" ; changeAssert.AssertOnlyChangesAre( "FirstName" , "FullName" , "IsChanged" ); } |