รับอินเทอร์เฟซต่อไปนี้:
public interface IFoo
{
bool Foo(string a, bool b = false);
}
พยายามล้อเลียนโดยใช้ Moq:
var mock = new Mock<IFoo>();
mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false);
ให้ข้อผิดพลาดต่อไปนี้ในเวลาคอมไพล์:
แผนภูมินิพจน์ต้องไม่มีการเรียกหรือการเรียกใช้ที่ใช้อาร์กิวเมนต์ที่เป็นทางเลือก
ฉันพบปัญหาข้างต้นที่ยกขึ้นเป็นการปรับปรุงในรายการปัญหาของ Moq และดูเหมือนว่าจะถูกกำหนดให้กับรุ่น 4.5 (ทุกครั้งที่เป็น)
คำถามของฉันคือ: ฉันควรทำอย่างไรหากข้างต้นจะไม่ได้รับการแก้ไขในเร็ว ๆ นี้? ตัวเลือกของฉันเป็นเพียงการตั้งค่าเริ่มต้นของพารามิเตอร์ทางเลือกอย่างชัดเจนทุกครั้งที่ฉันเยาะเย้ย (ประเภทใดที่เอาชนะจุดที่ระบุไว้ตั้งแต่แรก) หรือสร้างโอเวอร์โหลดโดยไม่ต้องบูล (เช่นสิ่งที่ฉันทำ ก่อน C # 4)?
หรือมีใครเจอวิธีที่ฉลาดกว่านี้ในการเอาชนะปัญหานี้หรือไม่?