如何在grails spock规范测试中使用数据库方法?

问题描述 投票:0回答:1

我将使用

spock
的规范测试来测试一些类测试。 有些方法使用
Domain.list()
,但无法通过光规格测试获得。 当然,我可以用模拟全局替换替换
Domain.list()
。 但它会禁用其他域静态方法。如何只更改一种静态域方法并保留其他方法?

我用这种方式嘲笑:

GroovyMock(Domain,global: true)
Domain.list() >> [ domain1, domain2 ]
groovy grails spock
1个回答
0
投票

你尝试过

GroovySpy
吗?

package de.scrum_master.stackoverflow.q78963473

import spock.lang.Specification

class MockSingleStaticMethodTest extends Specification {
  def test() {
    given:
    GroovySpy(Domain, global: true)
    Domain.list() >> ['domain1', 'domain2']

    expect:
    Domain.list() == ['domain1', 'domain2']
    Domain.doSomething() == 'result'
  }
}
class Domain {
  static List list() {
    println 'listing'
    ['one', 'two', 'three']
  }

  static String doSomething() {
    println 'doing something'
    'result'
  }
}

Groovy Web Console 中尝试一下。

© www.soinside.com 2019 - 2024. All rights reserved.