2012-07-12 17 views
6

Ben bir bağlantı (oldukça standart şeyler) ama şu kodu gerekmez, böylece bazı Mongo sınıfları taklidi oluşturabilir çalışıyorum bana verir sorunlar:mockito - 0 Eşleyiciler Beklenen, 1 Kaydedilmiş (InvalidUseOfMatchersException)

when(dbCollection.find(isA(DBObject.class))).thenReturn(dbCursor); 

bu da benim olsun Running:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: argüman matchers ait
kullanımı geçersiz! beklenen
0 matchers, 1 kaydedildi:
de ... GridFileManagerTest.beforeClass (GridFileManagerTest.java:67)

matchers ham değerleri ile birleştirilir, bu durum ortaya çıkabilir:
// yanlış: birYöntem (anyObject(), "ham Dize");

Eşleştiriciler kullanıldığında, tüm bağımsız değişkenlerin eşleştiriciler tarafından sağlanması gerekir.
Örneğin:
// doğru:
someMethod (anyObject(), eq ("Eşleştiriciyle dizgisi"));

Daha fazla bilgi için Matchers sınıfı için javadoc'a bakın.

ben bu olsa yapmak olsaydı: artık o sorun var

when(dbCollection.find(mock(DBObject.class))).thenReturn(dbCursor); 

. Bu, istediğimi gerçekleştirecek gibi görünmüyor - yöntemin DBObject türünde bir nesne ile çağrıldığında değeri döndürmek istiyorum.

Düşünceler?

+0

'[EDIT]' ilk yanıtın bir bölümüne bakın. Belki de aynı problemin var mı? http://stackoverflow.com/questions/10828843/powermockito-got-invaliduseofmatchersexception-when-use-matchers-mocking-static – bezmax

+0

DBCollection a Mockito alay nesnesi nedir? –

cevap

13

Bence sonuçlarınız, dbCollection Mockito-alay (veya yönteminiz statik veya son) değilse, sonuç ile uyumludur. Bu, hiçbirinin kullanılamayacağı bir eşleştiricinin kullanıldığı anlamına gelir; dolayısıyla "0 eşleştirici bekleniyor, 1 kaydedildi".

+0

Bu bir alay (DBCollection.class) – Paul

+2

Ancak (bunun MongDB olduğunu varsayarsak) ['DBCollection # find()'] gibi görünüyor (http://api.mongodb.org/java/2.6/com/mongodb/DBCollection. html # find (com.mongodb.DBObject)), aynı etkiye sahip final. [PowerMock] kullanmadan son yöntemleri alamazsınız (http://code.google.com/p/powermock/). –

+0

Bu gerçekten son bir yöntemdir, bunu benim için açıklığa kavuşturduğunuz için teşekkürler! – Paul