Grails模拟正在失败
我已经编写了一个正在进行集成测试的服务。该服务在内部调用外部rest服务并填充值 服务等级 为了避免实际的外部服务调用,我尝试如下模拟它Grails模拟正在失败,grails,integration-testing,spock,Grails,Integration Testing,Spock,我已经编写了一个正在进行集成测试的服务。该服务在内部调用外部rest服务并填充值 服务等级 为了避免实际的外部服务调用,我尝试如下模拟它 class ServiceIntegrationSpec extends IntegrationSpec { void testList() { setup: List<Employee> list = new ArrayList<>() list.add(new
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
}
}
class ServiceIntegrationSpec扩展了IntegrationSpec{
void testList(){
设置:
列表=新的ArrayList()
添加(新员工(id:“123”,姓名:“test1”))
添加(新员工(id:“146”,姓名:“test2”))
def clazz=String.class
def url=“”
def emptyMap=[:]
rackService.TEMPLATE.metaClass.getForObject={字符串url,类clazz,
映射空映射->列表}
什么时候:
def val=service.getList()
然后:
val!=null
}
}
当使用命令grailstest-app-integration:运行集成测试时,我得到以下错误:
您尝试重命名元类方法的变量
rackService.TEMPLATE.metaClass.getForObject = {String urlParameter, Class clazzParameter,
Map emptyMap ->listParameter}
不需要预先定义url、clazz和emptyMap。 代码
def clazz = String.class
def url = ""
def emptyMap = [:]
rackService.TEMPLATE.metaClass.getForObject = {String url, Class clazz,
Map emptyMap ->list}
可替换为
rackService.TEMPLATE.metaClass.getForObject = {String url, Class clazz,
LinkedHashMap emptyMap ->list}
请注意,groovy默认将此空映射[:]视为LinkedHashMap。请在下面找到参考资料: rackService.TEMPLATE.metaClass.getForObject = {String url, Class clazz,
LinkedHashMap emptyMap ->list}