我正在尝试模拟接口(interface)。我想设置“MockThisProperty”的属性没有 setter 。我无法更改接口(interface)源。我得到的错误是

上一个方法'IThirdPartyInterface.get_MockThisProperty();'需要返回值或抛出异常。

我尝试过 DynamicMock、Strictmock、部分模拟等。

当我尝试 SetupResult.For(thirdParty.MockThisProperty = mockedValue) 时,不会编译,因为没有 setter 。

在 mstest 中使用最新的 Rhino 模拟

不知所措,这是代码......

        var stuff = _Mockery.Stub<Hashtable>();
        matchItem.Add(key, "Test");

        var thirdParty = _Mockery.Stub<IThirdPartyInterface>();
        SetupResult.For(thirdParty.MockThisProperty).Return(stuff);

        _Mockery.BackToRecordAll();


       //more code

        _Mockery.ReplayAll();

        Assert.IsTrue(MethodToTest(thirdParty));

        _Mockery.VerifyAll();

最佳答案

这对我有用:

var thirdParty = Rhino.Mocks.MockRepository.GenerateStub<IThirdPartyInterface>();
thirdParty.Stub(x => x.MockThisProperty).Return("bar");
string mockPropertyValue = thirdParty.MockThisProperty; //returns "bar"

关于c# - 如何在没有 setter 的情况下模拟属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8461643/

10-09 06:44