Hi Tôi có một bộ điều khiển gọi là ApiController trong đó sử dụng một dịch vụ gọi ApiService như vậy:Grails Spock thử nghiệm điều khiển và dịch vụ
def createCategory(){
def jsonObj = request.JSON
jsonObj.each{ key, value ->
params.put(key,value)
}
render apiService.createCategory(params)
}
nào hoạt động tốt. Nhưng tôi dường như không thể viết một bài kiểm tra cho nó.
Đây là cách nay tôi đã có:
@TestFor(ApiController)
@Mock([Category,ApiService])
class CategorySpec extends Specification {
def setup() {
}
def cleanup() {
}
void "test"() {
setup:
def apiService = Mock(ApiService)
when:
request.method = 'POST'
request.requestMethod = 'POST'
params.categoryID = 'test'
controller.createCategory()
then:
println(response)
1==1
}
Từ đó tôi nhận được lỗi sau:
java.lang.NullPointerException: Cannot invoke method createCategory() on null object
Điều này rõ ràng là vì Nó không thể nhìn thấy đậu apiService tôi. Vì vậy, câu hỏi của tôi là làm thế nào để tôi làm điều này trong Spock?
bộ điều khiển của bạn có thể kết hợp createCategory() như thế nào ... hoặc cung cấp cấu trúc chi tiết của controoler đó. –