如何使用Rhino Mocks模拟IDbSet

时间:2011-09-09 10:06:03

标签: c# entity-framework rhino-mocks

我根本无法解决这个问题。我在测试中得到了这段代码:

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'试图暗中实现一个   具有较弱类型参数约束的接口方法

任何想法可能是什么?

谢谢!

2 个答案:

答案 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及更高版本解决了这个问题。