Tôi đã gặp phải các bài kiểm tra không thành công mà tất cả sự hiểu biết của tôi đều phải qua. Tôi đang thiếu một cái gì đó hiển nhiên, ở đây?Một lỗi trong Scalatest 'DoubleTolerance'?
import org.scalatest._
class xxxTests extends FlatSpec with ShouldMatchers {
import math.{Pi => PI}
"" should "(this should pass)" in {
assert(0.0 === 0.0) // ok
(1e-100) should equal ((0.0) plusOrMinus 1e-5) // FAILS!!! "1.0E-100 did not equal DoubleTolerance(0.0,1.0E-5)"
(1e-3) should not equal ((0.0) plusOrMinus 1e-5) // ok
(0.0) should equal ((0.0) plusOrMinus 1e-5) // FAILS!!! "0.0 did not equal DoubleTolerance(0.0,1.0E-5)"
}
}
Tôi đã trải nghiệm điều này với cả Scalatest 1.8 và 2.0M4.
Vâng, đừng quá khắt khe với chính mình. Tôi nghĩ rằng DSL mời lỗi này. Ý tưởng ban đầu của tôi là các que diêm cần một số cách mà luôn luôn có nghĩa là gọi == trên hai đối tượng, và đó là những gì tương đương. Ngoại trừ nó gọi .deep trên một mảng ở bên trái và bên phải, vì vậy đó là một ngoại lệ. Tôi nghĩ rằng "x nên bằng (y plusOrMinus tol)" có vẻ như nó sẽ làm việc, và tôi đã nhìn thấy nhiều hơn một người dùng thử nó ngay bây giờ. Vì vậy, tôi nghĩ rằng tôi sẽ thực sự hỗ trợ cú pháp đó trong một phiên bản sắp tới của ScalaTest. Nếu ai đó thực sự muốn so sánh hai dung sai cho bình đẳng, họ có thể làm như vậy với một khẳng định. –