接下來兩個測試針對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" ); } |
原文轉自:http://www.anti-gravitydesign.com