2017-03-07 6 views
0

EDIT 2:整数を渡す方法を考えましたが、戻ってくる値は空ですが、レンダリングがWebページ上の正しい値であるため、私のテストは失敗しています。Spock GrailsでPOSTサービスをテストする

EDIT:request.methodを使用してPOSTによって値を渡す方法を理解しましたが、各addParameterが文字列を要求するため、要求を使用してintにコントローラーを渡す方法がわかりません。

バイナリサービスとヘキサ・サービスの両方がバイナリまたは16進数に変換して結果を返す前に、バイナリサービスとヘキサ・サービスの両方でpost経由でパラメータを取得するgrailsで変換アプリケーションを使用しています。私は今、各サービスをテストするためにいくつかのSpockテストを書いていますが、パラメータがGETではなくPOST経由で送信される必要がある場合、サービスをテストする方法を理解できないようです。

バイナリ変換サービス:

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

私のすべての問題を考え出しました。最後は、明らかな理由でテストに失敗した有効なユーザーが存在するかどうかを検査したためです。

関連する問題