为静态GenerateMock<>设置Spring.Net和Rhino Mocks的配置
我在设置 Spring.Net 的配置时遇到问题,以便我可以使用 Rhino Mocks 生成模拟对象。 我意识到GenerateMock是一个静态方法,所以我需要在配置中使用工厂方法,但我就是无法让它工作。 这是我正在使用的配置:
<object id="exampleObject"
type="Rhino.Mocks.MockRepository, Rhino.Mocks"
factory-method="GenerateMock&lt;MyAssembly.MyInterface>" />
然后在我的代码(这是一个单元测试)中我使用:
using (IApplicationContext ctx = ContextRegistry.GetContext()) {....}
但我收到以下错误消息:
System.Configuration.ConfigurationErrorsException: Error creating context 'spring.root': Could not load type from string value 'MyAssembly.MyInterface'. ---> System.TypeLoadException: Could not load type from string value 'MyAssembly.MyInterface'..
任何想法为什么我可能会收到错误?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
实际上,您只在泛型参数中指定类型名称,而不指定程序集名称。 最好阅读
注意方括号来引用完整的限定类型名称,并且您需要获取最近的夜间构建。
完整限定名允许 CLR 定位包含您的类型的程序集。 否则 Spring 会扫描已加载的程序集以查找该类型名。 如果您的程序集尚未加载,您会遇到所面临的错误消息。
Actually you only specify the typename but not the assembly name in the generics argument. It should better read
Note the square brackets to quote the full qualified typename and you need to grab a recent nightly build.
The full qualified name allows the CLR to locate the assembly containing your type. Otherwise Spring scans already loaded assemblies for that typename. If your assembly wasn't loaded yet, you experience the errormessage you face.
不确定您使用的是哪个版本的 rhino 模拟,但这似乎不再起作用,因为 Spring.NET 无法正确解释 GenerateMock(params ...) 中参数的变量 nr。
我花了半天时间才弄清楚这一点并使用以下解决方法:
我基本上必须显式传递一个空的对象数组,以便 Spring 能够识别方法签名......
Not sure which version of rhino mocks you were using but this doesn't seem to work anymore because Spring.NET doesn't correctly interpret the variable nr of arguments in GenerateMock(params ...).
It took me half a day to figure this out and use the following workaround:
I basically had to explicitly pass an empty array of objects so that Spring would recognize the method signature...