Я пишу интерфейс командной строки для своего проекта. Пользователь вводит "создать проект foo", и он обнаруживает контроллер, ответственный за "проект", а затем вызывает метод Create
, передавая "foo" в качестве первого аргумента.
Он в значительной степени опирается на атрибуты и отражение: контроллер выглядит примерно так:
[ControllerFor("project")]
class ProjectController
{
[ControllerAction("create")]
public object Create(string projectName) { /* ... */ }
}
Я хотел бы использовать Moq в модульных тестах для синтаксического анализатора, примерно так:
Mock<IProjectsController> controller = new Mock<IProjectsController>();
controller.Expect(f => f.Create("foo"));
parser.Register(controller.Object);
parser.Execute("create project foo");
controller.VerifyAll();
Добавление атрибутов в интерфейс не работает - они не наследуются производными классами.
Могу ли я получить Moq для добавления атрибутов в класс, который насмехается?