我正在爲我的MVC 2控制器編寫單元測試(使用NUnit & Moq),下面是由Steven Sanderson編寫的Pro ASP.net MVC 2框架書中的例子(偉大的書籍,btw )。但是,我遇到了一些問題,我認爲這只是由於我對NUnit的理解不夠。當單元測試MVC控制器時出現衝突的結果
下面是摘錄,去掉無關的部分:
[Test]
public void Cannot_Save_Invalid_Event()
{
...
repository.Setup(x => x.SaveEvent(evt)).Callback(Assert.Fail);
...
repository.Verify(x => x.SaveEvent(evt));
}
這個測試是通過對我來說,雖然從我個人理解,這兩個報表應直接與對方發生衝突。第二個是不存在的,可是我把它放在以驗證它是通過正確的原因。
據我所知,我的倉庫已建立,如果「repository.SaveEvent(EVT)」被稱爲失敗。然而,在後來的測試中,我嘗試以驗證「repository.SaveEvent(EVT)」被調用。既然它通過了,這是不是表示它既被稱爲,也不被稱爲?也許這些陳述並不像我懷疑的那樣行事。
有人能解釋這兩種說法都不怎麼對立,以及他們如何能夠同時存在,並測試仍然通過了嗎?
不,沒有try/catch塊。不過謝謝你指出了這一點。這對我未來的知識可能會有所幫助。 – 2011-03-22 15:16:34