2010-12-08 70 views
0

我一直坚持这一两天,我最近开始使用RhinoMocks(v3.5),我已经设置了一个测试。一个存根Web服务,返回一个List集合和一个调用它的类,以及一个模拟对象,其中包含一个属性,我期望将其设置为对Web服务的调用结果。我的代码是这样的:RhinoMock模拟可以保存属性值吗?

[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功能,它只是分配列表从WebService返回mockView的列表属性。我可以使用这一行来测试工作:
mockView.AssertWasCalled(a => a.StoryListing = testList);
但我预计模拟对象将保持状态,我可以直接检查属性。我做错了什么或者这只是你必须使用rhino mocks的方式:即模拟对象不能保持状态,因为当我做assert.areequal nunit时说mockView.List属性为null。

回答

0

默认情况下,mock不会处理get/set属性(不知道为什么,有一种方法可以改变它,但我不记得手动)。你可以生成你的mockView作为存根(MockRepository.GenerateStub<IDefault>()) - 和存根支持属性行为。

+0

奇怪的是,他们不处理属性,但我想我可以使用一个存根它只是在语义上存根不会正确的目的我用它的目的,也许就像你说theres一种方式来改变它。谢谢! – 2010-12-11 08:56:43

相关问题