0
我有兩個類,Parser
和Item
。解析器類解析某些結構化文檔,並返回Item
對象,如果您調用類似Parser::GetItem(int some_id)
的東西。 這個Item類是用「Tell - do not ask」原則編寫的。我的意思是它沒有getter方法的幾個內部變量,這些變量由構造上的Parser
填充。如何單元測試返回'tell-dont-ask'對象的解析器?
現在的問題是:我怎麼能單元測試Parser
類?如何檢查內部Item
變量是否被正確解析? 我是否必須重新安排我的課程? 解析器接口返回完全構造的Item
對象可能是不好的設計嗎?
現在我已經把解析器分成了兩個類。實際的解析器,它只存儲結構中的字符串和項目構建器類。後者從解析器中獲取所需的結構,並進行所有轉換和檢查,比如將字符串轉換爲數字。 現在,我至少可以檢查解析器是否從文檔中提取正確的信息。 但問題仍然存在,因爲我無法檢查項目構建器中的所有轉換是否正常工作。我認爲我應該儘量減少項目構建器的功能,並儘可能地將其交給可測試的幫助器類。 – lslah
感謝您的回答!我認爲你的關鍵點在於我的解析器太大了。 也感謝您的鏈接。我會在稍後觀看。 – lslah