2012-05-10 19 views
8

Tôi muốn sử dụng Spec2 và Scala để kiểm tra dịch vụ REST được xây dựng bằng Java. Tôi nhìn vào Spray nhưng nó đường nối như bạn phải xây dựng ứng dụng của bạn bằng cách sử dụng Spray để kiểm tra nó bằng cách sử dụng SprayTest. Tôi cũng tìm thấy this thread nhưng nó không thực sự là những gì tôi đang tìm kiếm.Khung Scala nào được sử dụng để thử nghiệm các dịch vụ REST?

Bất kỳ ý tưởng nào khác?

Trả lời

4

Chúng tôi đã thử nghiệm thành công tất cả các API REST của chúng tôi bằng cách sử dụng Specs2 và thư viện Công văn (https://dispatchhttp.org/Dispatch.html). Công văn mất một chút thời gian để có được đầu của bạn xung quanh, nhưng một khi bạn hiểu cách nó soạn mọi thứ cùng với các toán tử khác nhau, bạn có thể thử nghiệm một dịch vụ REST đơn giản với một vài dòng mã.

Dưới đây là một vài trường hợp thử nghiệm từ dự án gần đây ra:

def issueErrorStatus = { 
    val requestBody = "msisdn=447777666666&message=Some test message" 
    val req = url("http://localhost:%d/otac/issue".format(port)) << 
          (requestBody, "application/x-www-form-urlencoded") 
    val response = Http.when(_ == 400)(req <:< (touchPointHeaders) as_str) 
    response must_== """{"error":"Message must contain an {OTAC} place holder"}""" 
    } 

    def checkOtac = { 
    val req = url("http://localhost:%d/otac/check".format(port)) <<? 
             Vector(("msisdn" -> "447777123456")) 
    val response = Http(req <:< (touchPointHeaders) as_str) 
    response must_== """{"status":"Present","reissueAllowed":true}""" 
    } 

Các thử nghiệm đầu tiên làm cho một bài yêu cầu, thứ hai yêu cầu get. Chúng tôi cũng có một số thử nghiệm phức tạp hơn phân tích cú pháp chuỗi JSON phản hồi thông qua trình phân tích cú pháp-json để chúng tôi có thể khẳng định lại tài liệu dễ dàng hơn. Các bài kiểm tra ở trên chỉ là kiểm tra một số trường hợp lỗi/trạng thái đơn giản.

Ngoài ra còn có một dự án khởi động lại đang tiến hành có API đơn giản và hoạt động với kết nối không đồng bộ. Bạn không chắc chắn nó ổn định như thế nào.

1

Trong các dự án cuối cùng của tôi, tôi đã sử dụng AsyncHttpClientJersey Client để thử nghiệm các dịch vụ REST và tôi có thể đề xuất cả hai dịch vụ này. Đối với các hoạt động không đồng bộ, trước đây là tốt hơn (tôi không biết liệu máy khách jersey có hỗ trợ hoạt động không đồng bộ) hay không.

Chúng được viết bằng Java và có (theo kiến ​​thức của tôi) không có Scala-API.

Các vấn đề liên quan