Spock在Grails中测试POST服务

Spock在Grails中测试POST服务,grails,Grails,编辑2:了解了如何传递整数,但是我的now my测试失败,因为返回的值为空,但呈现是网页上的正确值 编辑:我已经知道如何使用request.method通过POST传递值,但是我现在无法知道如何使用request将int传递到控制器中,因为每个addParameter都需要一个字符串 我在grails中有一个convert应用程序,其中binary和hex服务都通过post获取一个参数,然后将其转换为binary或hex并返回结果。我现在正在编写一些Spock测试来测试每个服务,但是如果参数需要

编辑2:了解了如何传递整数,但是我的now my测试失败,因为返回的值为空,但呈现是网页上的正确值

编辑:我已经知道如何使用request.method通过POST传递值,但是我现在无法知道如何使用request将int传递到控制器中,因为每个addParameter都需要一个字符串

我在grails中有一个convert应用程序,其中binary和hex服务都通过post获取一个参数,然后将其转换为binary或hex并返回结果。我现在正在编写一些Spock测试来测试每个服务,但是如果参数需要通过POST而不是GET发送,我似乎不知道如何测试服务

二进制转换服务:

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)

解决了我所有的问题。最后一个原因是函数检查是否存在有效的用户,而测试由于明显的原因失败了