Я хочу проверить функцию с сигнатурой типанасмешливый «новый()» ограничение с Moq
public static void DoSomething<T>(T something)
where T : class, IInterfaceA, IInterfaceB, new()
, который использует new T()
внутренне.
У меня проблемы с созданием макета для T
. Благодаря другому вопросу, я уже нашел решение для mocking multiple interfaces. Однако я не могу создать макет, удовлетворяющий ограничению new()
. Как решить эту проблему с помощью Moq?
Вы не являетесь ИМО - вы можете создать Dummy-класс и использовать Moq внутри него - см., Как только вы используете новое, вы все равно теряете соединение с вашей подделкой - и BTW: кажется, что это немного запах, если вы используйте 'new' there – Carsten
Вместо использования' new() 'constraint, вы должны добавить параметр' Func create' в 'DoSomething()' и вызвать это, чтобы создать объект, а не 'new' его. Точно, как создать объект, это не то, о чем должно знать DoSomething(). –
'DoSomething' - статический метод, поэтому вы не сможете подделать его с помощью' moq' ... Ваши усилия по издевательствам ограничения 'new()' бесполезны .... –