版本:C#4.0,Spring.Net 1.3.2,3.6.1 RhinoMocks負載MockReposity對象通過彈簧
鑑於這兩個接口:
public interface IDivisionSelectView
{
// ...
}
public interface ILoginView
{
IDivisionSelectView DivisionSelectView { get; }
// ...
}
我和春天嘗試。 Net使用Rhino.Mocks.MockRepository.GenerateMock<>()
工廠創建代理對象ILoginView
,該對象的DivisionSelectView屬性自動設置爲IDivisionSelectView
代理(使用同一工廠)。這裏的春天XML:
<object id="IDivisionSelectView"
type="Rhino.Mocks.MockRepository, Rhino.Mocks"
factory-method="GenerateMock<[Asm.Ns.IDivisionSelectView, Asm]>"
singleton="false">
<constructor-arg name="argumentsForConstructor">
<list element-type="System.Object, mscorlib">
</list>
</constructor-arg>
</object>
<object id="ILoginView"
type="Rhino.Mocks.MockRepository, Rhino.Mocks"
factory-method="GenerateMock<[Asm.Ns.ILoginView, Asm]>"
singleton="false">
<constructor-arg name="argumentsForConstructor">
<list element-type="System.Object, mscorlib">
</list>
</constructor-arg>
<property name="DivisionSelectView" ref="IDivisionSelectView">
</property>
</object>
這裏的調用C#代碼:
IApplicationContext ctx = new XmlApplicationContext(
"assembly://Asm/Asm/spring.xml");
ContextRegistry.RegisterContext(ctx);
ILoginView view = ctx.GetObject("ILoginView") as ILoginView;
這是我得到的錯誤:
Spring.Objects.Factory.ObjectCreationException was unhandled by user code
Message=Error creating object with name 'ILoginView' defined in 'assembly [Asm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null], resource [Asm.spring.xml] line 14' : Initialization of object failed : 'DivisionSelectView' node cannot be resolved for the specified context [Castle.Proxies.ILoginViewProxy4fa9c3fa65ca497bb09ce6358d876e4d].
這可能嗎?
這是由設計。我不再使用'Rhino.Mocks'作爲這個東西,當我發佈這個問題時,我可能沒有完全理解所涉及的所有事情。現在我只是簡單地模擬getter來返回一個Spring載入的對象。然而,所提出的問題基本上與你所建議的有關 - 如果可以在沒有公共setter的情況下用Spring注入該對象。 – wes