Независимо от того, как я стараюсь, я не могу имитировать чистый синтаксис Rhino Mocks, не объявив делегата.
Пример:
Expect.Call(service.HelloWorld("Thanks"))
У вас есть идеи, как это сделать?
Спасибо.
Вы можете использовать делегат Action, предоставляемый в более новых версиях .NET
void Execute(Action action) { action(); } void Test() { Execute(() => Console.WriteLine("Hello World!")); }
Используя синтаксис Lambda в 3.5, вы можете получить аналогичный синтаксис.
public void Call(Action action) { action(); } Expect.Call(() => service.HelloWorld("Thanks"));
Moq - это фреймворк, использующий лямбда-синтаксис для фальсификации.
var mock = new Mock<IService>(); mock.Setup(service => service.HelloWorld("Thanks")).Returns(42);
В Rhino Mocks он фактически вызывает метод. В это время объект находится в режиме настройки, и когда вы вызываете его, он записывает параметры и устанавливает ожидания. Вот почему вы можете уйти от синтаксиса делегата. К сожалению, во многих других случаях это невозможно.