Tôi có thể là mis-đọc ý định của bạn, nhưng như xa như tôi có thể thấy không cần phải làm gì để một mô hình để kiểm tra rằng các ngoại lệ đã được ném.
Dường như bạn có một lớp với một Foo phương pháp mà phải mất một chuỗi - cho phép gọi InnerClass này
public class InnerClass {
public virtual void Foo(string str) {
// do something with the string
}
}
và một lớp học, trong đó có một InnerClass như một tài sản (someProperty) trong đó có một thành viên Koko rằng phải mất một chuỗi Danh sách < > như một tham số
public class OuterClass {
private readonly InnerClass someProperty;
public OuterClass(InnerClass someProperty) {
this.someProperty = someProperty;
}
public void Koko(List<string> list) {
foreach (var str in list) {
if (str != null)
someProperty.Foo(str);
else
throw new FormatException();
}
}
}
LƯU Ý: tôi không thể nhận Danh sách < chuỗi? > để biên dịch - cho tôi biết loại (chuỗi) cơ bản phải không có giá trị. AFAIK, người ta chỉ cần tạo các kiểu giá trị nullable, các kiểu tham chiếu hoàn toàn không có giá trị.
Dường như bạn muốn kiểm tra xem liệu bạn có vượt qua trong danh sách các chuỗi mà bất kỳ giá trị nào trong số đó không có giá trị mà một lỗi định dạng được ném ra hay không.
Nếu vậy, lý do duy nhất cho MOQ là giải phóng chúng tôi khỏi lo lắng về chức năng InnerClass. Foo là một phương pháp, vì vậy, trừ khi chúng tôi đang sử dụng mocks nghiêm ngặt, chúng tôi chỉ có thể tạo ra một mô hình InnerClass không có thiết lập khác.
Có một thuộc tính [ExpectedException] mà chúng tôi có thể gắn thẻ thử nghiệm của mình để xác minh rằng ngoại lệ đã được ném.
[TestMethod]
[ExpectedException(typeof(FormatException))]
public void ExceptionThrown() {
var list = new List<string>() {
"Abel",
"Baker",
null,
"Charlie"
};
var outer = new OuterClass(new Mock<InnerClass>().Object);
outer.Koko(list);
}
Thử nghiệm này sẽ vượt qua nếu nhận dạng định dạng được ném và thất bại nếu không.
Hiển thị công việc của bạn .. Mọi người không thể đọc được suy nghĩ của bạn. Vui lòng đọc [FAQ] và [yêu cầu] cũng .. –