C# 4.0 C#动态对象的模拟/存根框架

C# 4.0 C#动态对象的模拟/存根框架,c#-4.0,dynamic,mocking,C# 4.0,Dynamic,Mocking,我正在寻找一个可以用于测试使用动态对象的C#代码的框架。我希望能够指定方法存根并设置模拟期望,就像在接口上使用Rhino mock一样 e、 g.使用Rhino Mocks样式,类似于以下内容 var fakeService = MockRepository.GenerateStub<dynamic>(); fakeService.Stub(s => s.SomeMethod(Arg.Is(someValue))).Returns(someResult); sut.Method

我正在寻找一个可以用于测试使用动态对象的C#代码的框架。我希望能够指定方法存根并设置模拟期望,就像在接口上使用Rhino mock一样

e、 g.使用Rhino Mocks样式,类似于以下内容

var fakeService = MockRepository.GenerateStub<dynamic>();
fakeService.Stub(s => s.SomeMethod(Arg.Is(someValue))).Returns(someResult);
sut.MethodUnderTest(fakeService);
var fakeService=MockRepository.generateSub();
存根(s=>s.SomeMethod(Arg.Is(someValue))).Returns(someResult);
sut.MethodUnderTest(伪造服务);

var fakeService=MockRepository.GenerateMock();
Expect(s=>s.DoSomething(Arg.Is(someValue));
sut.MethodUnderTest(伪造服务);
fakeService.VerifyAllExpections();
其中,被测试的方法将参数声明为动态对象


有什么建议吗?

你可以试着模仿
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);
var fakeService=MockRepository.generateSub();
目标结果;
fakeService.Stub(s=>s.TryInvokeMember(
Property.Value(“Name”、“SomeMethod”),
List.Equal(新的{someValue}),
输出结果)
.OutRef(someResult)
.返回(真);
sut.MethodUnderTest(伪造服务);
另外,请原谅任何rhino mocks语法问题,我以前使用MOQ做过,我刚刚在rhino mocks快速参考指南中写了相同的概念

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);