2011-10-14 33 views
21

tôi không thể tìm thấy một ví dụ về việc sử dụng phương pháp Khi ở MoqSử dụng Moq Khi (<bool> Func) phương pháp

When(Func<bool> condition); 

mục đích/sử dụng của phương pháp này là gì? Vui lòng cung cấp một mẫu mã minh họa một tình huống mà nó sẽ hữu ích.

Trả lời

24

"Khi" cung cấp cho bạn tùy chọn để có các thiết lập khác nhau cho cùng một đối tượng giả, tùy thuộc vào bất kỳ điều gì bạn phải quyết định. Giả sử bạn muốn thử nghiệm một nhà cung cấp định dạng mà bạn đã viết. Nếu chương trình (= test) chạy vào buổi sáng, một hàm gọi nào đó sẽ trả về null; vào buổi chiều một giá trị nhất định. Sau đó, bạn có thể sử dụng "When" để viết các thiết lập có điều kiện.

var mockedService = new Mock<IFormatProvider>(); 

mockedService.When(() => DateTime.Now.Hour < 12).Setup(x => x.GetFormat(typeof(string))).Returns(null); 
mockedService.When(() => DateTime.Now.Hour >= 12).Setup(x => x.GetFormat(typeof(string))).Returns(42); 
2

Với phương pháp này, bạn có thể định cấu hình hành vi của đối tượng được giả lập khi điều kiện được đặt trong Mock<T>.When(...) đánh giá là đúng. Điều này cho phép đối tượng giả lập của bạn phản ứng khác nhau tùy thuộc vào điều kiện đã cho.

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