加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 21:23:54 所属栏目:百科 来源:网络整理
导读:我正在寻找一个框架,我可以用它来测试使用动态对象的C#代码.我希望能够指定方法存根并设置模拟期望,就像在接口上使用Rhino Mocks之类的东西一样 例如类似于以下使用Rhino Mocks风格的东西 var fakeService = MockRepository.GenerateStubdynamic();fakeServi
我正在寻找一个框架,我可以用它来测试使用动态对象的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();

其中被测方法将参数声明为动态对象.

有什么建议?

解决方法

那么你总是可以尝试模拟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);

附:请删除任何犀牛模拟语法问题,我之前使用MOQ完成了这个,我刚刚用Rhino Mocks快速参考指南写出了相同的概念.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读