Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 模拟对象问题_C#_.net_Mocking_Rhino Mocks - Fatal编程技术网

C# 模拟对象问题

C# 模拟对象问题,c#,.net,mocking,rhino-mocks,C#,.net,Mocking,Rhino Mocks,我试着做以下的嘲弄 var checkComponent = MockRepository.GenerateStub<IController>(); checkComponent.Stub(r => r.GetSelector().Select(new Position(3,6,1))).Return(true); var checkComponent=MockRepository.generateSub(); checkComponent.Stub(r=>r.GetSel

我试着做以下的嘲弄

var checkComponent = MockRepository.GenerateStub<IController>();

checkComponent.Stub(r => r.GetSelector().Select(new Position(3,6,1))).Return(true);
var checkComponent=MockRepository.generateSub();
checkComponent.Stub(r=>r.GetSelector().Select(新位置(3,6,1))).Return(true);
我发现
r.GetSelector()
返回null

有没有一种方法可以让我试着去创造嘲弄

谢谢

我发现r.GetSelector()返回null

这是因为
checkComponent
r
在Stub()调用中)不是
IController
的真正实现,它基本上是实现
IController
接口的RhinoMock代理对象

有没有一种方法可以让我试着去创造嘲弄

您必须指定调用
GetSelector()
时应返回的内容, 当需要指定对方法的期望时,对场景使用Mock

var componentMock = MockRepository.GenerateMock<IController>();
var selectorMock = MockRepository.GenerateMock<ISelector>();

// if you need - specify concrete arguments to return true
selectorMock.Expect(x => x.Select(null)).IgnoreArguments().Return(true).Repeat.Any();
componentMock.Expect(x => x.GetSelector()).Return(selectorMock).Repeat.Any();
var componentMock=MockRepository.GenerateMock();
var selectorMock=MockRepository.GenerateMock();
//如果需要-指定具体参数以返回true
Expect(x=>x.Select(null)).IgnoreArguments().Return(true).Repeat.Any();
Expect(x=>x.GetSelector()).Return(selectorMock).Repeat.Any();
我发现r.GetSelector()返回null

这是因为
checkComponent
r
在Stub()调用中)不是
IController
的真正实现,它基本上是实现
IController
接口的RhinoMock代理对象

有没有一种方法可以让我试着去创造嘲弄

您必须指定调用
GetSelector()
时应返回的内容, 当需要指定对方法的期望时,对场景使用Mock

var componentMock = MockRepository.GenerateMock<IController>();
var selectorMock = MockRepository.GenerateMock<ISelector>();

// if you need - specify concrete arguments to return true
selectorMock.Expect(x => x.Select(null)).IgnoreArguments().Return(true).Repeat.Any();
componentMock.Expect(x => x.GetSelector()).Return(selectorMock).Repeat.Any();
var componentMock=MockRepository.GenerateMock();
var selectorMock=MockRepository.GenerateMock();
//如果需要-指定具体参数以返回true
Expect(x=>x.Select(null)).IgnoreArguments().Return(true).Repeat.Any();
Expect(x=>x.GetSelector()).Return(selectorMock).Repeat.Any();