如何模拟没有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();
这对我有用:
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")