Các yên tâm usage documentation có ví dụ như thế này:Lẫn lộn trên yên tâm so sánh dấu chấm động
get("/lotto").then().body("lotto.lottoId", equalTo(5));
OK, vì vậy họ đang sử dụng một khớp hamcrest để so sánh với giá trị int 5
.
Nhưng họ có một phần nói rằng yên tâm JSON phân tích cú pháp theo mặc định sử dụng float
và không double
, nên thay vì so với 12.12
tôi nên so sánh với 12.12f
:
get("/price").then().body("price", is(12.12f));
Chờ, vậy làm thế nào đã làm 5
công việc ở trên, là int
và không phải là double
? Trình phân tích cú pháp JSON có sử dụng các nguyên thủy khác nhau cho các giá trị nguyên và không nguyên không?
Nhưng nó trở nên khó hiểu hơn. Các lập trình viên thông thạo biết rằng bạn không nên so sánh trực tiếp các giá trị dấu phẩy động (vì sự phức tạp của cách các giá trị dấu phẩy động được lưu trữ, v.v ...). Thay vào đó, bạn nên sử dụng Matchers.closeTo(double operand, double error)
, cung cấp một biên độ lỗi. Đây là cách chính xác để làm điều đó. Nhưng chờ --- ngay cả khi tôi vượt qua trong 12.12f
để Matchers.closeTo (toán hạng đôi, lỗi kép), không phải là nó vẫn sẽ chuyển đổi nó thành một double
? Điều này sẽ làm việc với REST được bảo đảm?
Câu trả lời của bạn đến gần nhất để thực sự trả lời câu hỏi của tôi, mặc dù một số câu trả lời của bạn không có thẩm quyền. Điểm quan trọng nhất bạn đưa ra là nếu tôi sử dụng 'Matcher.closeTo()' (và đó là những gì chúng ta nên sử dụng anyway) nó có thể không quan trọng những gì mà trình phân tích cú pháp JSON đặt ra. –