C# 如何在没有setter的情况下模拟属性?

C# 如何在没有setter的情况下模拟属性?,c#,unit-testing,rhino-mocks,C#,Unit Testing,Rhino Mocks,我试图模拟一个接口。我要设置的属性“MockThisProperty”没有setter。我无法更改接口源。我得到的错误是 上一个方法“I irdPartyInterface.get_MockThisProperty();”需要返回值或异常才能引发 我试过DynamicMock、Strictmock、partial mock等 当我尝试SetupResult.For(thirdParty.MockThisProperty=mockedValue)时,由于没有setter,因此无法编译 在mstes

我试图模拟一个接口。我要设置的属性“MockThisProperty”没有setter。我无法更改接口源。我得到的错误是

上一个方法“I irdPartyInterface.get_MockThisProperty();”需要返回值或异常才能引发

我试过DynamicMock、Strictmock、partial mock等

当我尝试SetupResult.For(thirdParty.MockThisProperty=mockedValue)时,由于没有setter,因此无法编译

在mstest中使用最新的Rhino Mock

不知怎的,这是代码

        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 stuff=\u mockry.Stub();
匹配项。添加(键,“测试”);
var thirdParty=_Mockery.Stub();
SetupResult.For(第三方.MockThisProperty).Return(填充);
_mocky.BackToRecordAll();
//更多代码
_嘲弄;
Assert.IsTrue(MethodToTest(第三方));
_mocky.VerifyAll();
这对我很有用:

var thirdParty = Rhino.Mocks.MockRepository.GenerateStub<IThirdPartyInterface>();
thirdParty.Stub(x => x.MockThisProperty).Return("bar");
string mockPropertyValue = thirdParty.MockThisProperty; //returns "bar"
var thirdParty=Rhino.Mocks.MockRepository.GenerateStub();
第三方存根(x=>x.MockThisProperty).Return(“bar”);
字符串mockPropertyValue=thirdParty.MockThisProperty//返回“bar”

当我试图模拟在没有setter的接口中定义的属性时,无意中发现了这篇文章

由于我还没有使用Rhino,也不想再依赖Moq,我发现

mockedWithMoq.SetupGet(x=>x.PropertyWithGetterOnly)。返回(“foo”)


也将执行此操作。

句柄仅获取属性。只是说…这很有效。如果我像上面那样使用_mockry=new MockRepository()_mockry.Stub(),那么它会抛出一个异常。有人知道为什么吗?实例化mockrepository更多地是一种设置mock和stub的旧方法,需要花费大量精力来管理录制和播放等。使用静态方法是更新的、首选的、更加自动化和可预测的方法。用老方法处理事情会得到一些意想不到的结果。