Я работаю над проектом Java, где у меня есть класс с именем user, который хранит информацию о пользователе в базе данных.Я пытаюсь протестировать этот класс с помощью testcase: когда пользователь успешно создает таблицу, я создал строку, которая будет возвращать «пользователь создал», я хочу проверить это с помощью junit.Ниже мой код для теста джунит
public class UserDatabaseTest
{
User user = null;
IterationDetailsParser iterationDetails = mock(IterationDetailsParser.class);
DatabaseConnection dbConnection = mock(DatabaseConnection.class);
Object obj ;
Connection con;
@Before
public void setUp() throws SQLException
{
MockitoAnnotations.initMocks(this);
user = new User();
con = (Connection) dbConnection.GetDBConnection();
obj = iterationDetails.getUserId();
}
@Test
public void test() throws JsonProcessingException, SQLException
{
Mockito.when(dbConnection.GetDBConnection()).thenReturn(con);
Mockito.when(iterationDetails.getUserId()).thenReturn("8");
assertSame("User ID alreday exits", user.CreateUserDetails());
}
}
Теперь я хочу смоделировать объекты, такие как "iterationDetails.getUserId ()", которые я потребляю из другого класса.Когда я пытаюсь смоделировать объект вместо того, чтобы быть смоделированным, он вызывает реальный метод getuserId () и возвращает ноль.Как я могу решить это?Ниже мой пользовательский класс.
public String CreateUserDetails() throws SQLException, JsonProcessingException
{
dbcon = DatabaseConnection.getInstance();
iteratinDetails = IterationDetailsParser.getInstance();
String st;
try {
String sqlUser = "INSERT INTO user (User_Id,Username,Active_Indi)VALUES(?,?,?)";
PreparedStatement statement = (PreparedStatement) dbcon.GetDBConnection().prepareStatement(sqlUser);
statement.setString(1, iteratinDetails.getUserId());
statement.setString(2, iteratinDetails.getUserObj());
statement.setBoolean(3, true );
statement.executeUpdate();
statement.close();
System.out.println("user created");
// string i return in last compare using assertEquals
st = "user created";
} catch (SQLException e)
{
System.out.println("user id alredy exits");
userIdExits = false;
}
return st;
}
tl; dr
Как мне высмеивать объекты в этом состоянии?