2017-03-07 102 views
0

编辑2:找出如何传递一个整数,但是现在我的测试失败了,因为返回的值是空的,但渲染是网页上的正确值。Spock在Grails中测试POST服务

编辑:我想通过POST使用request.method如何传递值,但是我现在无法弄清楚如何使用请求传递一个int到控制器中,因为每个addParameter都需要一个字符串。

我有一个在grails中的转换应用程序,其中二进制和十六进制服务在将其转换为二进制或十六进制并返回结果之前通过后置参数。我现在正在编写一些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) 

回答

0

想通了我的所有问题。最后一个是因为该功能检查是否存在由于显而易见的原因测试失败的有效用户。

相关问题