我正在为从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