How to mock IDbSet with Rhino Mocks
I can't get this working at all. I've got this code in my test:
MockRepository repository = new MockRepository();
IDbSet<SystemUser> userSet = repository.StrictMock<IDbSet<SystemUser>>();
Expect.Call(userSet.Any(u => u.Id == "UserName")).Return(true);
// More code follows
But it bombs out on the StrictMock
line with the error:
System.TypeLoadException: Method '开发者_如何转开发Create' on type 'IDbSet`1Proxy1862178487664986a7bd03ad3b5c6f2c' from assembly 'DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=a621a9e7e5c32e69' tried to implicitly implement an interface method with weaker type parameter constraints
Any ideas what this could be?
Thanks!
You have encountered a known issue that Rhino.Mocks (version 3.6.0.0) has with generic method constraints.
The 'Create' method:
TDerivedEntity Create<TDerivedEntity>() where TDerivedEntity : class, TEntity
is failing to be generated correctly because of the constraints where TDerivedEntity : class, TEntity
.
There is more information regarding the bug here : Can't get RhinoMocks to emit a mock that follows the generic type restriction rules
Unfortunately, it looks like we are going to have to wait for the next version of Rhino.Mocks to address the issue.
For those who are still looking for a solution for this problem. rhino mocks 3.6.1 and later solves this issue.
精彩评论