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)