當使用moq時,我有一個奇怪的問題。最小起訂量驗證不起作用無效
在一個項目中,當我嘗試驗證某個方法已被調用時,它說它沒有。當我調試測試時,它清楚地調用了該方法。
這是一個簡單的緩存對象,我想查看是否將某些內容添加到緩存中。我有(其中包括)添加,包含和獲取方法。
我的驗證工作正常用以下方法:
bool Contains(string key);
T Get<T>(string key);
但不是在這:
void Add(string key, object objectToCache, CacheItemPolicy policy);
我已經嘗試白衣精確值,我給的方法是:
mockedCache.Verify(p => p.Add(LOCATION_CACHE_KEY, locations, policy), Times.Once());
使用It.IsAny
mockedCache.Verify(p => p.Add(It.IsAny<string>(), It.IsAny<IEnumerable<string>>(),
It.IsAny<CacheItemPolicy>()), Times.Once());
無論我嘗試什麼,我都會得到被稱爲0次的響應。
我從來沒有見過這種行爲。有人可以告訴我什麼是錯的嗎?
感謝
邁克爾
更新: 作爲@SergRogovtsev建議,我看着生成的輸出最小起訂量。
不調用了IEnumerable但名單
Moq傾向於寫出在斷言消息中被稱爲*的東西。叫什麼?另外,你有沒有'時代'嘗試? – 2012-08-13 14:33:50
在您驗證...這是一個錯字? 'It.IsAny'。它應該是'It.IsAny ()' –
2012-08-13 14:34:45
你是否認爲你的代碼是錯誤的,並且Add沒有被調用? – cadrell0 2012-08-13 14:35:26