Недавно я пытался использовать FakeItEasy, но не смог создать Fake из конкретного класса, не обойдя многие причуды.
Я попробовал следующее:
public class MyObject {
public MyObject(){}
}
...
MyObject fakeObject = A.Fake<MyObject>();
Это привело к тому, что конструктор не найден с исключением аргументов сопоставления.
Затем я попробовал:
public class MyObject {
public MyObject(string temp){}
}
...
MyObject fakeObject = A.Fake<MyObject>(x => x.WithArgumentsForConstructor(() => new MyObject("temp")));
Что привело к аналогичной ошибке.
Наконец я попробовал:
public class MyObject {
//public MyObject(){}
}
...
MyObject fakeObject = A.Fake<MyObject>();
Что позволило мне наконец создать подделку. Я не понимаю, почему большинство примеров подделки конкретного класса ссылаются на то, что это проще, чем я обнаружил? И почему использование задокументированного метода, испытание № 2 выше, не сработало?
Есть ли какие-то ограничения для подделки конкретного класса, которые не задокументированы?