Spock在Grails中测试POST服务
编辑2:了解了如何传递整数,但是我的now my测试失败,因为返回的值为空,但呈现是网页上的正确值 编辑:我已经知道如何使用request.method通过POST传递值,但是我现在无法知道如何使用request将int传递到控制器中,因为每个addParameter都需要一个字符串 我在grails中有一个convert应用程序,其中binary和hex服务都通过post获取一个参数,然后将其转换为binary或hex并返回结果。我现在正在编写一些Spock测试来测试每个服务,但是如果参数需要通过POST而不是GET发送,我似乎不知道如何测试服务 二进制转换服务:Spock在Grails中测试POST服务,grails,Grails,编辑2:了解了如何传递整数,但是我的now my测试失败,因为返回的值为空,但呈现是网页上的正确值 编辑:我已经知道如何使用request.method通过POST传递值,但是我现在无法知道如何使用request将int传递到控制器中,因为每个addParameter都需要一个字符串 我在grails中有一个convert应用程序,其中binary和hex服务都通过post获取一个参数,然后将其转换为binary或hex并返回结果。我现在正在编写一些Spock测试来测试每个服务,但是如果参数需要
def binary() {
if (request.method == 'POST') {
if (session.user) {
Integer number = params.getInt('number')
String binary = Integer.toBinaryString(number)
def r = new Results()
r.customerID = session["id"]
r.username = session["username"]
r.ConvertService = "binary"
r.number = number
r.result = binary
r.date = new Date()
r.time = new Timestamp(System.currentTimeMillis())
if(r.save()) {
render binary
} else {
render r.getErrors()
}
} else {
redirect(controller: 'main')
}
} else {
response.sendError(405)
}
}
斯波克试验:
void "Binary Service should return 1100"() {
given:
def convert = new ConvertController()
when:
def result = convert.binary(12)
then:
result == 1100
}
这就是我的测试现在返回的结果:
groovy.lang.MissingMethodException: No signature of method: eadassignment.ConvertController.binary() is applicable for argument types: (java.lang.Integer) values: [12]
Possible solutions: binary(), any(), <init>(), index(), every(), find()
at org.codehaus.groovy.grails.plugins.web.api.ControllerTagLibraryApi.methodMissing(ControllerTagLibraryApi.java:97)
at eadassignment.ConvertControllerSpec.Binary Service should return 1100(ConvertControllerSpec.groovy:22)
groovy.lang.MissingMethodException:没有方法签名:eadassignment.ConvertController.binary()适用于参数类型:(java.lang.Integer)值:[12]
可能的解决方案:binary()、any()、()、index()、every()、find()
位于org.codehaus.groovy.grails.plugins.web.api.ControllerTagLibraryApi.methodMissing(ControllerTagLibraryApi.java:97)
在eadassignment.ConvertControllerSpec.Binary服务应返回1100(ConvertControllerSpec.groovy:22)
解决了我所有的问题。最后一个原因是函数检查是否存在有效的用户,而测试由于明显的原因失败了