2012-09-16 44 views
8

Tôi đang xây dựng một bộ các API RESTful và giờ đây được yêu cầu để viết các bài kiểm tra đơn vị cho chúng. Tôi không chắc những gì các bài kiểm tra đơn vị thực sự nên kiểm tra.Kiểm tra các API REST bằng cách sử dụng PHPUnit

Kiểm tra đơn vị có nên kiểm tra xem phản hồi nhận được từ máy chủ có chính xác cho các đầu vào khác nhau không? Nếu vậy, có phải là một phương pháp hay để có một bộ định dạng phản hồi chính xác được xác định trước và kiểm tra phản hồi đối với chúng không?

CẬP NHẬT

tôi kêu gọi các dịch vụ này thông qua CURL và tôi chắc chắn có thể kiểm tra mã trạng thái. Phản hồi có thể thay đổi đối với các đầu vào khác nhau, vì vậy tôi có nên kiểm tra tất cả các phản hồi có thể có không?

Kiểm tra đơn vị thường được thực hiện cho các API RESTful bằng cách sử dụng PHPUnit nói chung như thế nào?

Trả lời

4

Nếu lớp dữ liệu API của bạn đủ trừu tượng, để bạn có thể nhận được đầu ra nhất quán và có thể dự đoán được cho đầu vào nhất định, trường hợp thử nghiệm của bạn chắc chắn sẽ bao gồm một số kỳ vọng đầu ra chung cho một số danh sách đầu vào hữu hạn. trường hợp bạn có thể trống lên.

Nếu API của bạn không thể chạy với lớp dữ liệu ở trạng thái có thể dự đoán được (ví dụ: nếu dữ liệu được kết nối với dữ liệu trực tiếp hoặc dữ liệu được chia sẻ giữa các nhà phát triển), bạn sẽ phải chi tiêu nhiều thời gian sửa các bài kiểm tra của bạn để mô hình chính xác trạng thái mới của dữ liệu. Điều đó làm cho việc kiểm thử đơn vị ít có giá trị hơn, vì bạn có thể không chạy chúng thường xuyên, và vì bạn không bao giờ chắc chắn liệu một sự thất bại thử nghiệm có phải do sự thay đổi trong dữ liệu hay thay đổi trong logic chương trình hay không. Cho dù điều đó lớn hơn nguy cơ không có bài kiểm tra đơn vị hay không sẽ phụ thuộc vào tình huống cá nhân của bạn (tần suất các bài kiểm tra bị hỏng, mức độ quan trọng của dịch vụ là & ct).

Theo như cách sử dụng PHPUnit để chạy các trường hợp thử nghiệm, tôi không thể trả lời cụ thể, nhưng tôi tưởng tượng rằng bạn sẽ làm như @ basiljames được ghi chú; thực hiện cuộc gọi chống lại điểm cuối đã cho và xác minh rằng phản hồi nhận được chính xác phù hợp với mong đợi của bạn. Không khác với bất kỳ thử nghiệm đơn vị nào khác, ngoại trừ việc chúng có thể chạy chậm hơn một chút.

2

Bạn có thể sử dụng JUnit cho các trường hợp thử nghiệm của mình. Bạn sẽ phải kiểm tra HTTP Status Code và sau đó, nội dung trên phản hồi cho bất kỳ thuộc tính hoặc giá trị cụ thể nào.

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