【发布时间】:2010-12-08 10:02:24
【问题描述】:
我已经坚持了一两天了,我最近开始使用 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 属性分配从 web 服务返回的列表。我可以使用这条线进行测试:
mockView.AssertWasCalled(a => a.StoryListing = testList);
但我希望模拟对象会保持状态,我可以直接检查属性。我做错了什么还是这只是你必须使用犀牛模拟的方式,即:模拟对象不能保持状态,因为当我执行 assert.areequal nunit 时说 mockView.List 属性为空。
【问题讨论】:
标签: rhino-mocks