Wpis z mikrobloga

#programowanie #cpp
Mam problem z gtestem.
Jest postawiony mock ogólny wcześniej w teście, że coś ma się nie zadziać.
EXPECTCALL(mockObj, method(, )).Times(0);

Dalej w scenariuszu testu jest jednak
EXPECT
CALL(mockObj, method(arg, _).WillDoSth();

Z jednej strony test płacze, że method ma nie być zawołane, ale jest, a zaraz potem, że drugi warunek jest niespełniony bo metoda została zawołana (przechwycił ją ten pierwszy expect)

W tym przypadku nie bardzo jest jak użyć RetiresOnSaturation bo saturacja to Times(0) więc de facto ten expect nigdy nie traci ważności.
Jakieś sugestie?
  • 5
@Malkof CTki w gteście. Odziedziczone... Scenariusz idzie przez szajs i otwiera streamy audio w PulseAudio. Zależnie od stanu w jaki wchodzimy można oczekiwać że stream się stworzy bądź nie. Oczywiście oczekiwanie "nie stworzenia" jest maksymalnie ogólne.
Nie mogę tego zaorać totalnie...
via Wykop Mobilny (Android)
  • 0
@pietryna123: na pewno u ciebie wygladą to w te sposób?
Expect
Action
Expect
Action

Czy masz tylko jedną akcję na końcu? Coś mi się nie chce wierzyć że to nie działa
@neo320 właśnie po kolei jest. Tylko mamy coś takiego

Expect no stream create (libmethod(, ).Times(0))
Action 1
Expect stream create lib
method(arg, ).WillDoSth()
Action 2

I teraz expect na lib
method z akcji 2 #!$%@? się z expect no stream create... Mimo że ten drugi jest bardziej precyzyjny.