0

サービスの単体テストをしようとしていますが、モックを使用して、DB からファイルを取得するドメイン オブジェクトのメソッドをオーバーライドしたいと考えています。

    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 行に到達すると、アサーション エラーがスローされます。

junit.framework.AssertionFailedError: この時点で「getClass」への呼び出しは期待されていません。「getFile」への呼び出しがまだ 1 回必要です。groovy.mock.interceptor.StrictExpectation.match(StrictExpectation.groovy:56) で grails.test.GrailsMock.createMock_closure1(GrailsMock.groovy:136) で grails.test.MockUtils.updateMetaClassForClass_closure95(MockUtils.groovy:1297) で groovy で。 grails.test.MockUtils.updateMetaClassForClass(MockUtils.groovy:1294) で groovy.lang.Closure.call(Closure.java:425) で lang.Closure.call(Closure.java:412) grails.test.MockUtils.mockDomain で(MockUtils.groovy:470) で grails.plugin.spock.UnitSpec.mockDomain(UnitSpec.groovy:141) で com.genospace.inbound.pg.HemeCNVPipelineTestSpec.test 処理 Heme ファイル(HemeCNVPipelineTestSpec.groovy:66)

4

1 に答える 1

1

質問が何であるかわかりません。

オブジェクトを 2 回モックしているため、このエラーが発生しました。

  • 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])
于 2013-01-16T00:38:03.837 に答える