【发布时间】:2012-05-25 14:13:10
【问题描述】:
为了结束测试,我的测试程序集不会预加载依赖程序集的影子副本,这一点很重要。
Assembly T 是加载和测试 Assembly A 的测试框架。 程序集 A 依赖于 B 中定义的接口。
出于测试目的,我必须替换 A 中的一些静态成员,而在构建时它们不可用。
这里有一些伪代码说明了我所处的困境:
A_assembly = Assembly.LoadFrom("A.dll");
A_type = A_assembly.GetType("TheSingleton.Master", true);
MethodInfo Master_Init_Info = type.GetMethod("Init", BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
//before init is called some things need to be replaced
FieldInfo semiknown = A_type.GetField("needsmocking", BindingFlags.Public | BindingFlags.Static));
??? mock_semiknown = MockRepository.GenerateMock<???>();
semiknown.SetValue((???)mock_semiknown, mock_semiknown);
//testing makes only sense if that static is replaced.
Master_Init_Info.Invoke(null, null);
- 我可以通过
semiknown.FieldType访问该类型,但有什么好处 那是我吗?我可以以某种方式使用该信息来创建模拟吗 并用它替换静态成员? - 假设我得到了类型并且能够替换静态成员 - 如何在模拟中建立我的期望?
【问题讨论】:
标签: c# reflection dll rhino-mocks end-to-end