2011-09-09 29 views
4

我根本無法完成這項工作。我有這個代碼在我的測試:如何使用Rhino Mocks模擬IDbSet

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: 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

任何想法,這可能是?

謝謝!

回答

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的下一個版本,以解決這一問題。

+0

啊,那不是很理想......我現在已經創建了自己的手動模擬。謝謝您的幫助! –

2

對於那些仍在尋找這個問題的解決方案。犀牛嘲笑3.6.1和更高版本解決了這個問題。