對於一個項目,我有一系列創建XML僞庫的(它們不是真正的倉庫,但填補了同樣的作用,所以我再也忍受不了了命名)通過調用一些返回的XML存儲的特效。爲了我的項目,我還有「映射器」(它們不是true映射器......)將XML作爲輸入並使用Linq將原始XML轉換爲DTO。我應該如何測試返回XML的「存儲庫」?
由於我有映射器,在我看來,「存儲庫」不應該測試返回的值(因爲這是映射器的工作;存儲庫只關心它返回了一些XML,無論是否XML數據是正確的)。但是,這會導致測試從字面上確保「存儲庫」的返回值不爲null。
基本上每一個倉庫實現了一種稱爲GetXml
一個方法,它返回一個XML文檔的接口。實際的實現是數據庫調用,但爲了測試,我有一個非常基本的模擬類,它只返回一個空白的XML文檔。最終,我需要使用一些硬編碼的值來構建一個實際的XML文件,但是這個「確定」的版本庫測試基本上是單行的:Assert.IsNotNull(repository.GetXml(), "Xml response was null");
這是甚至應該測試的東西,還是有沒有更好的方法來測試這個沒有踩在映射器的腳趾?我想從設計的角度來看,我可以完全移除映射器,只需讓存儲庫自己完成映射(或者使映射器在存儲庫內部)。我沒有做TDD,因爲我實際上已經編寫了代碼,但是我想創建測試,因此測試更容易,所以我可以向我的同事展示測試的好處(我們目前不使用類型的自動化測試)。
我想我要問的是這樣的:它是好寫一個測試,只有表達了有意設計的人誰可以使用代碼,而無需實際關心的返回值?眼下這就是這些測試做的:他們說,在代碼中,「我應該能夠創建一個XmlXXXRepository
類,實現了一個名爲IXmlRepository
的接口,需要較長呼籲建設quoteID
,並有一個名爲GetXml()
方法返回一個XmlDocument對象「就是這樣。