Diberikan antarmuka berikut:
public interface IFoo
{
bool Foo(string a, bool b = false);
}
Mencoba mengejeknya menggunakan Moq:
var mock = new Mock<IFoo>();
mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false);
memberikan kesalahan berikut pada waktu kompilasi:
Pohon ekspresi tidak boleh berisi panggilan atau pemanggilan yang menggunakan argumen opsional
Saya telah menemukan masalah di atas diangkat sebagai peningkatan dalam daftar masalah Moq dan tampaknya ditugaskan ke rilis 4.5 (kapan pun itu).
Pertanyaan saya adalah: apa yang harus saya lakukan mengingat hal di atas tidak akan diperbaiki dalam waktu dekat? Apakah pilihan saya hanya untuk secara eksplisit mengatur nilai default dari parameter opsional setiap kali saya mengejeknya (yang mengalahkan titik menentukan satu di tempat pertama) atau untuk membuat kelebihan tanpa bool (seperti apa yang akan saya lakukan? sebelum C # 4)?
Atau adakah yang menemukan cara yang lebih cerdas untuk mengatasi masalah ini?