unit-testing – 使用findAll,生成MissingMethodException的模拟
发布时间:2020-12-15 08:38:17 所属栏目:Java 来源:网络整理
导读:def retrieveEatenFood(String token,String addedDate) { def consumer = Consumer.findByMobileToken(token) if(consumer != null) { def efList = [] def list = consumer.findAll("from EatenFood as ef where date(ef.dateAdded) = date(:da)",[da:sdf_
def retrieveEatenFood(String token,String addedDate) { def consumer = Consumer.findByMobileToken(token) if(consumer != null) { def efList = [] def list = consumer.findAll("from EatenFood as ef where date(ef.dateAdded) = date(:da)",[da:sdf_long.parse(addedDate)]) list.each{ def eatenList = [:] eatenList.put("foodType",it.food.name) eatenList.put("sequenceNumber",it.sequenceNumber) eatenList.put("eatenDate",it.eatenDate) eatenList.put("DateAdded",it.dateAdded) efList.add(eatenList); } return efList; } } 试图模拟上面的方法,但findAll继续生成异常. 这个问题有效!现在我需要为它编写测试,并且我一直得到这个例外.任何人都可以帮助我! groovy.lang.MissingMethodException: No signature of method: carrotdev.Consumer.findAll() is applicable for argument types: (java.lang.String,java.util.LinkedHashMap) values: [from EatenFood as ef where date(ef.dateAdded) = date(:da),[da:Sun Feb 13 01:51:47 AST 2011]] Possible solutions: findAll(groovy.lang.Closure),find(groovy.lang.Closure) at carrotdev.ConsumerService.retrieveEatenFood(ConsumerService.groovy:146) at carrotdev.ConsumerService$retrieveEatenFood.call(Unknown Source) at carrotdev.ConsumerServiceTests.testEatenFoodRetrievedSucessfully(ConsumerServiceTests.groovy:359) 解决方法
我会使用描述性名称将查询移动到Consumer域类,例如
static List<EatenFood> findAllEatenByDate(String date) { consumer.findAll( "from EatenFood as ef where date(ef.dateAdded) = date(:da)",[da:sdf_long.parse(addedDate)]) } 然后电话很简单 def list = Consumer.findAllEatenByDate(addedDate) 你可以轻松地模仿 def foods = [new EatenFood(...),new EatenFood(...),...] Consumer.metaClass.static.findAllEatenByDate = { String date - > foods } 务必在消费者集成测试中测试finder方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |