C# 如何在不获取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

RhinoMocks在存根简单的只读属性时引发3个异常。如何在不获取异常的情况下执行此操作

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内部。