Mam następujący test
private IWarehouse mockWarehouse;
@Before
public void setUp() throws Exception {
mockWarehouse = EasyMock.createMock(Warehouse.class);
crane.setWarehouse(mockWarehouse);
}
...
@Test(expected = FullWarehouseException.class)
public void testPlacePackageWhenWarehouseIsFull(){
Package packageToPlace = new Package("123");
EasyMock.expect(mockWarehouse.placePackage(packageToPlace)).andReturn(true);
EasyMock.replay();
crane.placePackage(packageToPlace);
}
Crane to mój serwis, a Warehouse - dao. Ustawiam setterem mocka warehouse i oczekuję, że zwróci true. Tymczasem logowanie zwraca false..
Crane:
public void placePackage(Package p) {
logger.info("placePackage");
if (isValid(p)) {
logger.info("placePackage isValid");
logger.info(warehouse.placePackage(p));
//if (!warehouse.placePackage(p)) {
// throw new FullWarehouseException();
// }
}
}
Jak można oczekiwać otrzymuję logi:
placePackage
placePackage isValid
false
Nie rozumiem, czemu zwraca mi false skoro mockuję, że ma być true.
Wiem, że to czego test oczekuje ma się aktualnie nijak do czego mockuję, bo nie rzuci wyjątkiem, jeśli zwróci true. Debuguję sobie po prostu. Wychodzi aktualnie, że uparcie zwraca false mimo mockowania na true i już wymiękam. Liczę, że ktoś świeżym okiem spojrzy i zauważy co jest nie tak.