我根本无法解决这个问题。我在测试中得到了这段代码:
MockRepository repository = new MockRepository();
IDbSet<SystemUser> userSet = repository.StrictMock<IDbSet<SystemUser>>();
Expect.Call(userSet.Any(u => u.Id == "UserName")).Return(true);
// More code follows
但它在StrictMock
行突然爆炸,出现错误:
System.TypeLoadException:方法'创建'类型 来自汇编的'IDbSet`1Proxy1862178487664986a7bd03ad3b5c6f2c' 'DynamicProxyGenAssembly2,Version = 0.0.0.0,Culture = neutral, PublicKeyToken = a621a9e7e5c32e69'试图暗中实现一个 具有较弱类型参数约束的接口方法
任何想法可能是什么?
谢谢!
答案 0 :(得分:3)
您遇到了Rhino.Mocks(版本3.6.0.0)具有通用方法约束的已知问题。
'创建'方法:
TDerivedEntity Create<TDerivedEntity>() where TDerivedEntity : class, TEntity
由于约束where TDerivedEntity : class, TEntity
,无法正确生成。
此处有关于此错误的更多信息:Can't get RhinoMocks to emit a mock that follows the generic type restriction rules
不幸的是,看起来我们将不得不等待下一个版本的Rhino.Mocks来解决这个问题。
答案 1 :(得分:2)
对于那些仍在寻找解决此问题的人。 rhino mocks 3.6.1及更高版本解决了这个问题。