如何模拟没有setter的属性

本文关键字:setter 属性 何模拟 模拟 | 更新日期: 2023-09-27 18:17:32

我正在尝试模拟一个接口。我想设置的属性"MockThisProperty"没有setter。我不能更改接口源。我得到的错误是

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

我已经尝试了DynamicMock, Strictmock, partial mock等

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

使用最新的Rhino mock和mstest

我不明白,这是代码…

        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();

如何模拟没有setter的属性

这对我有用:

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

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

由于我还没有使用Rhino,也不希望有比Moq更多的依赖项,所以我找到了

mockedWithMoq.SetupGet(x => x.PropertyWithGetterOnly).Returns("foo")