фреймворк-макет для динамических объектов C # - PullRequest
4 голосов
/ 16 сентября 2011

Я ищу платформу, которую можно использовать при тестировании кода C #, использующего динамические объекты.Я хочу иметь возможность задавать заглушки методов и устанавливать ожидания макетов, как если бы вы использовали что-то вроде Rhino Mocks на интерфейсах

, например, что-то вроде следующего, используя стиль Rhino Mocks

var fakeService = MockRepository.GenerateStub<dynamic>();
fakeService.Stub(s => s.SomeMethod(Arg.Is(someValue))).Returns(someResult);
sut.MethodUnderTest(fakeService);

или

var fakeService = MockRepository.GenerateMock<dynamic>();
fakeService.Expect(s => s.DoSomething(Arg.Is(someValue)));
sut.MethodUnderTest(fakeService);
fakeService.VerifyAllExpectations();

, где тестируемый метод объявляет параметр как динамический объект.

Есть предложения?

1 Ответ

1 голос
/ 17 сентября 2011

Ну, вы всегда можете попробовать издеваться DynamicObject. Это выглядело бы немного по-другому, но это дразнит динамический объект с чем угодно.

var fakeService = MockRepository.GenerateStub<DynamicObject>();
object outResult;
fakeService.Stub(s => s.TryInvokeMember(
               Property.Value("Name", "SomeMethod"),
               List.Equal(new{someValue}),
               out outResult))
           .OutRef(someResult)
           .Returns(true);
sut.MethodUnderTest(fakeService);

P.S. пожалуйста, исключите любые проблемы синтаксиса насмешек носорога, я делал это раньше, используя MOQ, и я только что написал ту же концепцию с кратким справочным руководством по носорогам носорога.

...