我在尝试对服务类 api 进行单元测试时遇到问题
MyService.groovy
public int myMethod() {
def cr = MyDomain.createCriteria()
def myDomainCount = cr.count {
isNull("column1")
}
return myDomainCount
}
MyTestClass.groovy
class MyTestClassTests extends GrailsUnitTestCase {
void testMyCount() {
mockDomain(MyDomain)
myCriteria = [count :{Closure cls -> 10}]
MyDomain.metaClass.static.createCriteria = {myCriteria}
int cnt = new MyService().myMethod()
assert 10 == cnt
}
}
执行 myMethod() 时执行上述测试方法失败。上线失败
cr.count {
isNull("column1")
}
我在执行期间得到的堆栈跟踪:
groovy.lang.MissingMethodException: No signature of method: com.MyService.isNull() is applicable for argument types: (java.lang.String) values: [column1]
Possible solutions: findAll(), findAll(groovy.lang.Closure), is(java.lang.Object), isCase(java.lang.Object) at
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55) at
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:78) at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
cr.list
注意:如果我在两个地方(服务类和测试类)都使用相同的测试用例,则可以正常工作。我不知道为什么它在计数期间失败??????!!!!!!
任何想法都会有很大帮助。在此先感谢。