RhinoMock mock可以保存属性值吗?

时间:2010-12-08 10:02:24

标签: rhino-mocks

我已经坚持了一两天,我最近开始使用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。

1 个答案:

答案 0 :(得分:0)

默认情况下,模拟不处理get / set属性(不知道为什么。有一种方法可以改变它但我不记得了)。您可以将mockView生成为存根(MockRepository.GenerateStub<IDefault>()) - 并且存根支持属性行为。