我正在爲從Patient
類的實例獲取各種信息的方法編寫單元測試。 Patient
類是一個非常複雜的容器,可以通過執行諸如patient.demographics.firstName
之類的操作來輕鬆獲取信息。如果不將單元測試轉變爲集成測試,就無法創建「真實」病人。是否有可能暫時用另一個類替換一個類?
明顯的解決辦法是用Map
替換Patient
。如果這是Python,我可以做Patient = dict
並繼續我的生活,但我還沒有能夠在Groovy中找到任何等價物==我只能找到替代方法。從Groovy測試中最基本的信息來看,似乎我可以使用map強制作爲一個過於複雜的替代品,但我認爲這是最後的手段。
有問題的代碼是Patient lpatient = app.createLegacyPatient(payload.patientId.toLong())
,我已經嘲笑createLegacyPatient方法返回地圖。問題是,一個Map對象不是一個Patient對象,並試圖將其轉換爲Patient不起作用。
Groovy有什麼方法可以說:「這個班現在是另一班,直到我說不同嗎?」換句話說,是否有可能做到這樣new Patient()
實際上會返回一個Map
對象?
這真的取決於因爲Groovy可以創建一個代理,但代理並不總是由代碼被「騙」接受。請發佈一個代碼示例,使用'Patient',其中'Map'不足。 –
我真的發不了比我更多的東西(這是爲了工作),但似乎這個問題的答案顯然是「不」。對於它的價值,我最終通過將「病人病人」改爲「病人病人」來避免這個問題。我最初並不願意這樣做,因爲那是一個由我是承包商的公司的正式員工編寫的代碼,但是,嗯......靜態打字很爛。 – khagler