简体   繁体   中英

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM