我已经坚持了一两天,我最近开始使用RhinoMocks(v3.5)并且我已经设置了测试。一个存根Web服务,它返回一个List集合和一个调用它的类,以及一个带有属性的模拟对象,我希望通过调用Web服务来设置该属性。我的代码是这样的:
[Test]
public void Call_WebService_list_populated()
{
IData stService = MockRepository.GenerateStub<IData>();
IDefault mockView = MockRepository.GenerateMock<IDefault>();
DefaultPresenter presenter = new DefaultPresenter(mockView);
presenter.StService = stService;
mockView.Stub(x => x.RequestingUser).Return("test");
List<string> testList = new List<string> { new string() };
stService.Stub(x => x.GetList("test")).Return(testList);
presenter.LoadList();
Assert.AreEqual(testList,mockView.List);
}
在LoadList函数中,它只是为mockView的List属性指定从webservice返回的列表。我可以使用这条线进行测试:
mockView.AssertWasCalled(a =&gt; a.StoryListing = testList);
但我预计模拟对象将保持状态,我可以直接检查属性。我做错了什么或者这只是你必须使用rhino mocks的方式,即:模拟对象不能保持状态,就像我执行assert.areequal nunit所说的mockView.List属性为null。
答案 0 :(得分:0)
默认情况下,模拟不处理get / set属性(不知道为什么。有一种方法可以改变它但我不记得了)。您可以将mockView生成为存根(MockRepository.GenerateStub<IDefault>()
) - 并且存根支持属性行为。