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

4
我正在寻找一个框架,可以用于测试使用动态对象的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

你可以尝试使用模拟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);

附言:请原谅任何Rhino Mocks语法问题,我之前使用过MOQ,只是按照Rhino Mocks快速参考指南写出了相同的概念。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接