2012-09-20 35 views
6

Làm cách nào để kiểm tra xem Seq[String] có trống hoặc không sử dụng thông số kỹ thuật 2 trong Scala? Tôi đang sử dụng seq must be empty hoặc seq.length must be greaterThan(0) nhưng tôi sẽ luôn có lỗi không khớp loại.Kiểm tra trống rỗng với specs2

ret is Seq[String] 

ret.length must be greaterThan(0) 

[error] ApiTest.scala:99: type mismatch; 
[error] found : Int 
[error] required: org.specs2.matcher.Matcher[String] 
[error]   ret.length must be greaterThan(0) 
+0

Bạn có thể may mắn hơn nếu bạn đăng mã chính xác và thông báo lỗi tương ứng như được trình biên dịch đưa ra. –

+0

Có vui lòng thêm một ví dụ hoàn chỉnh hơn. Tôi nghĩ rằng trường hợp của bạn có thể là một trường hợp của vấn đề suy luận kiểu "cổ điển", trong đó bạn có các biểu thức đối sánh liên tiếp được phân cách bằng dòng mới, như "ret.length phải lớn hơnThan (0) \ n ret.lenght phải làLowerThan (10)" (nếu đó là trường hợp tôi sẽ chỉnh sửa bình luận này như là một câu trả lời đúng) – Eric

Trả lời

1

Hãy thử sử dụng trình so khớp số 2 have size. Vì kích thước không được âm, nếu nó không bằng 0, nó phải lớn hơn 0. Do đó, chúng tôi có thể sử dụng:

ret must not have size (0) 
5

Tôi nghĩ lỗi không khớp loại được gây ra bởi một chút mã khác với mã bạn đã đăng.

dụ bạn chỉ nên làm việc với:

ret must not be empty 

tôi đã cố gắng và khẳng định được làm việc một cách chính xác:

"Seq beEmpty test" should { 
    "just work" in { 
     Seq("foo") must not be empty 
    } 
    } 

Bạn có thể chạy vào rắc rối nếu bạn sử dụng nhiều khẳng định mỗi thử nghiệm, cho ví dụ sau đây không biên dịch:

"Seq beEmpty test" should { 
    "just work" in { 
    List() must be empty 
    Seq("foo") must not be empty 
    } 
} 

Điều bất ngờ, nhưng dễ dàng được khắc phục bởi giúp trình biên dịch:

"Seq beEmpty test" should { 
    "just work" in { 
    List() must beEmpty 
    Seq("foo") must not beEmpty 
    } 
} 
+0

Bất kỳ lý do nào không sử dụng 'beEmpty' theo mặc định? – OrangeDog

+0

@OrangeDog chỉ sự thanh lịch của 'trống rỗng' trên 'beEmpty' có thể là một đối số. Họ có ngữ nghĩa giống nhau. – iwein

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