C# 如何在不获取3个异常的情况下存根属性?
RhinoMocks在存根简单的只读属性时引发3个异常。如何在不获取异常的情况下执行此操作C# 如何在不获取3个异常的情况下存根属性?,c#,mocking,rhino-mocks,rhino-mocks-3.5,C#,Mocking,Rhino Mocks,Rhino Mocks 3.5,RhinoMocks在存根简单的只读属性时引发3个异常。如何在不获取异常的情况下执行此操作 public class ThirdPartyClass { public string Name { get; set; } public ThirdPartyClass(string name) { Name = name; } } public interface IWithProperty { ThirdPartyClass MyRead
public class ThirdPartyClass
{
public string Name { get; set; }
public ThirdPartyClass(string name)
{
Name = name;
}
}
public interface IWithProperty
{
ThirdPartyClass MyReadonlyProperty { get; }
}
[TestClass]
public class MockedProperty
{
[TestMethod]
public void PropertyTest()
{
IWithProperty withProperty = MockRepository.GenerateStub<IWithProperty>();
// 3 exceptions thrown
withProperty.Stub(wp => wp.MyReadonlyProperty).Return(new ThirdPartyClass("Mocked"));
}
}
公共类第三方类
{
公共字符串名称{get;set;}
公共第三方类(字符串名称)
{
名称=名称;
}
}
公共接口IWithProperty
{
第三方类MyReadonlyProperty{get;}
}
[测试类]
公共类MockedProperty
{
[测试方法]
公共无效属性测试()
{
IWithProperty withProperty=MockRepository.GenerateSub();
//抛出3个异常
withProperty.Stub(wp=>wp.MyReadonlyProperty).Return(新的第三方类(“Mocked”);
}
}
在1行中引发3个以下异常:
System.MissingMethodException发生消息=类型上的构造函数
'城堡.代理.第三方循环ProxyC32ABA1028C144BB844D190D92AD191A'
没有找到。Source=mscorlib StackTrace:
在System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr、Binder Binder、Object[]args、CultureInfo culture、,
对象[]activationAttributes)InnerException:
System.MissingMethodException发生消息=类型上的构造函数
'城堡.代理.第三方循环ProxyC32ABA1028C144BB844D190D92AD191A'
没有找到。Source=mscorlib StackTrace:
在System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr、Binder Binder、Object[]args、CultureInfo culture、,
对象[]activationAttributes)InnerException:
System.ArgumentException发生消息=无法实例化代理
类别:Test.ThirdPartyClass。找不到
无参数构造函数。参数名称:构造函数参数Source=Rhino.Mocks ParamName=constructorArguments StackTrace: 在Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(类型classToProxy,类型[]additionalInterfacesToProxy, ProxyGeneration选项,对象[]构造函数参数, IInterceptor[]拦截器)InnerException:
奇怪的是,如果添加默认(无参数)构造函数会发生什么?如果属性类型具有无参数构造函数,则不会引发异常。然而,由于它是一个来自第三方库的类,我无法添加该构造函数。非常奇怪。。。对于Rhino.Mock 3.6,它对我来说就像预期的那样工作。你用的是什么版本?我也用的是3.6.0.0。它设法存根属性,但如果您查看跟踪或启用VS(Ctrl+D,E)中抛出的CLR异常,您将看到它们。引发事件()时也会发生同样的情况。这很烦人,因为它会给你带来大量异常,并隐藏重要的异常。经验法则是,不应使用异常来控制程序流,这似乎发生在Rhinomock内部。