【发布时间】:2015-04-07 04:41:42
【问题描述】:
我编写了一个正在执行集成测试的服务。该服务在内部调用外部休息服务并填充该值。
服务类
import org.springframework.web.client.RestTemplate;
class Service {
final static RestTemplate TEMPLATE = new RestTemplate()
def getList() {
final String info = TEMPLATE.getForObject(getHostUrl(), String.class,[:])
return info
}
为了避免实际的外部服务调用,我试图模拟如下。
class ServiceIntegrationSpec extends IntegrationSpec {
void testList() {
setup:
List<Employee> list = new ArrayList<>()
list.add(new Employee(id:"123", name: "test1"))
list.add(new Employee(id:"146", name: "test2"))
def clazz = String.class
def url = ""
def emptyMap = [:]
rackService.TEMPLATE.metaClass.getForObject = {String url, Class clazz,
Map emptyMap ->list}
when:
def val = service.getList()
then:
val != null
}
}
使用以下命令运行集成测试时:grails test-app integration:,出现以下错误:
- 当前作用域已经包含一个变量 url
- 当前作用域已经包含一个变量 clazz
- 当前作用域已经包含一个变量emptyMap
【问题讨论】:
标签: grails integration-testing spock