2012-05-07 28 views
44

Tôi bắt đầu làm việc theo cách của mình thông qua các Scala Koans, được tổ chức xung quanh một bộ kiểm tra đơn vị với khoảng trống mà người ta cần phải điền vào. (Ý tưởng này được mô phỏng sau một dự án Ruby Koans tương tự.) Bạn bắt đầu công cụ sbt chạy thử nghiệm , và nó khuyên nhủ:Toán tử === (triple-equals) trong Scala Koans là gì?

 
[info] + ***************************************** 
[info] + 
[info] + 
[info] + 
[info] + Please meditate on koan "None equals None" of suite "AboutEmptyValues" 
[info] + 
[info] + 
[info] + 
[info] + ***************************************** 

... và do đó bạn đi xem thử nghiệm đơn vị này và nó nói:

 
test("None equals None") { 
    assert(None === __) 
} 

... và, sau khi thiền, bạn nhận ra rằng bạn nên điền vào trống như sau:

 
test("None equals None") { 
    assert(None === None) 
} 

... và sau đó chuyển sang thử nghiệm đơn vị tiếp theo.

Câu hỏi của tôi là nhà điều hành === này là gì? Tôi dường như không thể tìm thấy nó ở bất cứ đâu. Đây có phải là nhà khai thác DSL được định nghĩa trong dự án Scala Koans không? Hay là một phần của khuôn khổ ScalaTest? Hay ở Scala đúng không?

Trả lời

70

Đây là toán tử ba số từ ScalaTest. Hãy xem trang này: Getting Started with FunSuite. Nó nói:

ScalaTest cho phép bạn sử dụng cú pháp xác nhận của Scala, nhưng xác định số ba bằng toán tử (===) để cung cấp cho bạn thông báo lỗi tốt hơn. Mã sau đây sẽ cung cấp cho bạn một lỗi duy nhất chỉ ra rằng một sự khẳng định thất bại:

assert(1 == 2) 

Sử dụng bình đẳng triple thay vào đó sẽ cung cấp cho bạn nhiều thông tin hơn thông báo lỗi , "1 không bằng 2":

assert(1 === 2) 
Các vấn đề liên quan