Tôi đang thử nghiệm một phương pháp điều khiển một bộ sưu tập. Cho một tập hợp các tham số, nó phải chứa chính xác một phần tử khớp với một điều kiện. Chỉnh sửa: Bộ sưu tập có thể có một số yếu tố khác không phù hợp với điều kiện.Việc sử dụng Đơn như là một Thực hành không tốt?
Tôi đang sử dụng Single để kiểm tra hành vi đó, hoạt động tốt, vì nó sẽ không thực hiện được thử nghiệm bằng cách ném ngoại lệ nếu không có kết quả trùng khớp hoặc nhiều hơn một kết quả phù hợp. Nhưng không có khẳng định thực tế, bằng cách nào đó vi phạm a rrange, a ct, a ssert. Vì vậy, tôi tự hỏi nếu đây là một thực hành xấu và nếu có một cách tốt hơn để làm điều này.
Tiếp theo mã giả để chứng minh câu hỏi của tôi:
[TestMethod]
public void TestMethod()
{
List list = MethodToTest(param1, param2);
list.Single(s => s.Matches(condition));
//No actual Assert
}
Tôi nghĩ khẳng định là tốt hơn, ít nhất là vì bạn có thể cung cấp thêm thông tin mang tính thông tin về những gì và ở đâu không thành công. – Evk
Đây là một ý kiến dựa trên câu hỏi ... Theo ý kiến của tôi, tôi không sử dụng 'Single' để xác nhận rằng chỉ có 1 mục trong UT ... Tôi sẽ sử dụng' Assert.Equal (1, list.Count (. ..)) ' –
Tôi đang nghĩ rằng việc sử dụng' SingleOrDefault' có thể được sử dụng tại đây. Sau đó, bạn có thể khẳng định nếu mục được trả về không phải là rỗng. – Jon