【问题标题】:Can a RhinoMock mock hold property values?RhinoMock 模拟可以保存属性值吗?
【发布时间】: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


    【解决方案1】:

    默认情况下,模拟不处理获取/设置属性(不知道为什么。有一种方法可以更改它,但我不记得了)。您可以将 mockView 生成为存根 (MockRepository.GenerateStub&lt;IDefault&gt;())——存根支持属性行为。

    【讨论】:

    • 奇怪的是他们不处理属性,但我想我可以使用存根它只是语义上的存根不适合我使用它的目的,也许就像你说的那样有一种方法来改变它尽管。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2015-11-05
    • 1970-01-01
    • 2020-01-05
    相关资源
    最近更新 更多