Я понимаю, что это старый вопрос, поэтому я публикую этот ответ для всех, кто имеет эту проблему и сталкивается с этим вопросом.Мне удалось повторить аналогичную проблему для этого.
У меня есть класс:
public class Service : IService
{
public Service (int prNum)
{
//call to a c++ wrapper class (this is where the problem occurs)
//some other calls
}
}
Я пытался создать класс обслуживания в качестве подделки для модульного теста:
private Service fakeServ = A.Fake<Service>((x => x.WithArgumentsForConstructor(() => new Service(3))));
Я получаю ту же ошибку: конструктор не найден с исключением совпадающих аргументов
В итоге я вошел в вызов A.Fake с помощью отладчика и нашел код внутри конструктора (этот A.Fakedid call) не удалось инициализировать блок глобальной памяти из-за того, что Visual Studio не работает в режиме администратора.(CreateFileMapping, код ошибки 5, Системная ошибка 0x5: CreateFileMapping () )
Я установил Visual Studio для запуска от имени администратора, и проблема была решена, подделка создана.
Кажется, что Fake, созданный с помощью конструктора с параметрами, работает через конструктор (чего я и хотел избежать, создавая фальшивку, так как глобальная память не входит в фокус моего модульного теста, у меня будетчтобы выяснить, есть ли другой способ, которым я должен был бы создать это).
Код, который вы разместили, не указывает, что вы вызываете классы-обертки или создаете глобальную память, но вы можете попробовать войти в вызов Fake creation с помощьюотладчик, чтобы увидеть, начинает ли конструктор работать и есть ли ошибка в конструкторе, и какие ошибки возвращаются.