我正在尝试对服务进行单元测试,并且我想使用模拟覆盖域对象上的方法,该方法从数据库中检索文件。

    def mockElem = mockFor(DataElement, false)
    mockElem.demand.getFile(){return tempFile}

    def dataElem = mockElem.createMock()
    dataElem.orderId = "123"
    dataElem.id = tempFileName
    dataElem.dataType = "cnv"
    dataElem.dataStatus = DataStatus.TRANSFERED
    mockDomain(DataElement, [dataElem])

当我在数据元素上调用动态查找器时,我希望此模拟域与getFile的mockFor需求功能一起返回。到达MockDomain行时,引发断言错误

最佳答案

不确定是什么问题。

您收到此错误是因为您两次模拟对象:

mockFor / createMock

  • mockDomain
  • mockDomain需要了解有关作为参数传递的对象的一些信息(此处验证类是否正确),但是mockFor不允许调用getClass():您未为此类调用添加demand

    您是否真的需要使用demand模拟?

    我认为简单的情况应该工作:
    def dataElem = new DataElement()
    dataElem.orderId = "123"
    dataElem.id = tempFileName
    dataElem.dataType = "cnv"
    dataElem.dataStatus = DataStatus.TRANSFERED
    
    dataElem.file = tempFile
    mockDomain(DataElement, [dataElem])
    

    10-06 01:22