我对Java、JUNIT和MACKITO还是个新手.我有一个非常简单的BookingManager
级课程
package com.daydreamer.mocka;
import java.util.List;
import java.util.Arrays;
public class BookingManager {
// Getters
public List<Integer> getRoomsFromDb() {
// Suppouse we are fetching data from database
int[] roomInts = {1,2};
List<Integer> rooms = Arrays.stream(roomInts).boxed().toList();
return rooms;
}
public boolean getRoom(int ind) {
List<Integer> rooms = this.getRoomsFromDb();
return rooms.contains(ind);
}
// String represntation
@Override
public String toString() {
String strRepr = "BookingManager {" +
"}";
return strRepr;
}
}
以及其对应的测试类BookingManagerTest
.
package com.daydreamer.mocka;
import java.util.List;
import java.util.ArrayList;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import com.daydreamer.mocka.BookingManager;
@DisplayName("Booking Manager Test")
public class BookingManagerTest {
private BookingManager bm;
@BeforeEach
void init() {
this.bm = Mockito.mock(BookingManager.class);
List<Integer> rooms = new ArrayList<>();
rooms.add(1);
rooms.add(2);
Mockito.when(this.bm.getRoomsFromDb()).thenReturn(rooms);
}
// Why this test is failing, please help !
@Test
@DisplayName("postive test")
void testGetRoomPositive(){
Assertions.assertTrue(this.bm.getRoom(1));
Mockito.verify(this.bm, Mockito.times(1)).getRoom(1);
}
@Test
@DisplayName("negative test")
void testGetRoomNegative(){
Assertions.assertFalse(this.bm.getRoom(5));
Mockito.verify(this.bm, Mockito.times(1)).getRoom(5);
}
}
然而,mock
并没有像预期的那样工作.testGetRoomPositive
应该返回true
,但返回false
.谁能让我知道我的错误.
干杯.