. EXPECT_CALL
, sahte aramalarda beklentiyi ayarlar.
EXPECT_CALL(mock, methodX(_)).WillRepeatedly(do_action);
Yazma methodX
mock
üzerinde herhangi argümanlarla kez herhangi bir sayı olarak adlandırılan olabileceği gMock söyler ve o zaman, mock
do_action
seslendirecek. Öte yandan,
ON_CALL(mock, methodX(_)).WillByDefault(do_action);
methodX
mock
üzerine çağrıldığı taktirde, bu
do_action
gerçekleştirmek gerektiğini gMock söyler. Bu özellik, alayla ilgili birçok beklenti yazmanız gereken bir senaryoda yardımcı olur ve çoğu/hepsi aynı eylemi belirtmelidir - özellikle de karmaşıksa. Bu eylemi
ON_CALL
'da belirtebilir ve eylemi açıkça belirtmeden
EXPECT_CALL
s yazabilirsiniz. Örneğin.İşaret döner varsayarak başka örnekte
EXPECT_CALL(mock, Sign(-4, _));
EXPECT_CALL(mock, Sign(0, _));
EXPECT_CALL(mock, Sign(1, _)).Times(2);
EXPECT_CALL(mock, Sign(2, _));
EXPECT_CALL(mock, Sign(3, _));
EXPECT_CALL(mock, Sign(5, _));
: Eğer EXPECT_CALL
s çok yazmak varsa Asistan
ON_CALL(mock, Sign(Eq(0), _))
.WillByDefault(DoAll(SetArgPointee<1>("argument is zero"), Return(0)));
ON_CALL(mock, Sign(Gt(0), _))
.WillByDefault(DoAll(SetArgPointee<1>("argument is positive"), Return(1)));
ON_CALL(mock, Sign(Lt(0), _))
.WillByDefault(DoAll(SetArgPointee<1>("argument is negative"), Return(-1)));
, sen 'davranışı her zaman belirtmek
mock
gerekmez
int
, sen
ON_CALL(mock, Sign(Gt(0), _)).WillByDefault(Return(1));
EXPECT_CALL(mock, Sign(10, _));
yazarsanız çağrı mock.Sign(10)
ON_CALL
olarak 1 için varsayılan davranış sağlar dönecektir EXPECT_CALL
tarafından belirtilen arama. Eğer
EXPECT_CALL(mock, Sign(Gt(0), _).WillRepeatedly(Return(1));
EXPECT_CALL(mock, Sign(10, _));
yazarsanız Ama mock.Sign(10, p)
çağırma İkinci beklenti karşı eşleştirilecek 0 döndürür. Bu beklenti açık bir eylem belirtmez ve gMock bunun için varsayılan bir eylem oluşturur. Bu varsayılan eylem, int
için 0 olan dönüş türünün varsayılan değerini döndürmektir. Bu durumda ilk beklenti tamamen göz ardı edilecektir.
Ancak daha önce bir EXPECT_CALL ile ON_CALL ile tanımlanan varsayılan eylemi geçersiz kılmaya çalıştığımda işe yaramaz gibi görünüyor. Herhangi bir fikir? – Nicoretti
@Nicoretti Hayır, işe yaramıyor. İkisini de kurarsan ne olacağından bile emin değilim. Belki bu durumda sadece bir kişi idam edilir. BTW'nin, bir varsayılan davranışı nasıl belirleyeceğinizi açıklayan bir [bölüm] (http://code.google.com/p/googlemock/wiki/CheatSheet#Setting_Default_Actions) var. –
evet bunu gördüm ama EXPECT_CALL'in varsayılan davranışı değiştirmek için kullanılabileceğinden merak ettim ve kafam karıştı. Ve doktorlar, her ikisini de kullanırken yan etkiler/öncelik hakkında bir şey söylemiyorlar. – Nicoretti