Cho giao diện sau:
public interface IFoo
{
bool Foo(string a, bool b = false);
}
Cố gắng chế nhạo nó bằng Moq:
var mock = new Mock<IFoo>();
mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false);
đưa ra lỗi sau tại thời điểm biên dịch:
Cây biểu thức không được chứa lệnh gọi hoặc lệnh gọi sử dụng các đối số tùy chọn
Tôi đã tìm thấy vấn đề ở trên được nêu ra như một cải tiến trong danh sách các vấn đề của Moq và nó dường như được gán cho bản phát hành 4.5 (bất cứ khi nào có).
Câu hỏi của tôi là: tôi nên làm gì khi những điều trên sẽ không sớm được khắc phục? Có phải các tùy chọn của tôi chỉ để đặt rõ ràng giá trị mặc định của tham số tùy chọn mỗi khi tôi mô phỏng nó (loại nào đánh bại quan điểm chỉ định một tham số ngay từ đầu) hoặc để tạo quá tải mà không có bool (như những gì tôi đã làm trước C # 4)?
Hoặc có ai đã tìm ra một cách thông minh hơn để khắc phục vấn đề này?