Скажем, у меня есть класс «ClassA», который зависит от класса «ClassB» (введен в конструктор ClassA). Я хочу издеваться над ClassB, чтобы тестировать ClassA изолированно. Оба класса внутренние.
Поправьте меня, если я ошибаюсь, но похоже, что Moq может издеваться над классом только в том случае, если он общедоступный, у него есть общедоступный конструктор без параметров, а методы, которые нужно высмеивать, public virtual
. Я действительно не хочу делать эти классы общедоступными. Мне что-то не хватает с Moq, или он просто не подходит для того, что я хочу делать?
Думаю, я мог бы создать интерфейс (скажем, «IClassB»), который реализует ClassB, внедрить его в ClassA и вместо этого смоделировать интерфейс. ClassB все еще может быть внутренним (хотя я понимаю, что методы интерфейса должны быть общедоступными). Хотя это сработает, мне неловко создавать множество интерфейсов, единственная цель которых - поддерживать имитацию модульных тестов. Мысли?