Как издеватьсяJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как издеваться

Сообщение Anonymous »

У меня есть следующая функция, которая изменяет имя пользователя пользователя в базе данных MySQL: < /p>

public User changeUsername (ChangeUsername ChangeUsername) {
// Getting user from database
String sql = "select * from users where username='" + ChangeUsername.getUsername() + "'";
List users = jdbcTemplate.query(sql, new UserMapper());
User user = users.get(0);
// Getting encoded password from database
String encodedPassword = user.getPassword();
// Getting password input from user
String rawPassword = ChangeUsername.getPassword();
// Comparing passwords
boolean isPasswordMatch = passwordEncoder.matches(rawPassword, encodedPassword);
// If password matches
if(isPasswordMatch){
// Getting current userrname
String username = ChangeUsername.getUsername();
// Getting new username
String newusername = ChangeUsername.getNewusername();
// Updating username in database with prepared statement
String update = "update users set username = ? where username = ?";
Connection conn;
try {
conn = datasource.getConnection();
PreparedStatement preparedStatement = conn.prepareStatement(update);
preparedStatement.setString(1, newusername );
preparedStatement.setString(2, username);
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return user;
}
return null;
}
< /code>

Я пытаюсь проверить функцию, используя Mockito и Junit 5, однако я получаю ошибку утверждения при вызове Assertequals < /code>, чтобы проверить, успешно ли изменено имя пользователя в тестовом коде. Поэтому имя пользователя не изменяется правильно при тестировании функции. Ниже приведен мой тестовый код: < /p>

@RunWith(MockitoJUnitRunner.class)
public class ChangeUsernameTest {

UserDaoImpl userdaoimpl = mock(UserDaoImpl.class);
UserDao userdao = mock(UserDao.class);
@Mock
JdbcTemplate jdbcTemplate;
@Mock
private PreparedStatement stmt;
@Mock
private Connection c;
@Mock
private DataSource ds;
@Mock
ChangeUsername changeusername;
@Mock
User user;
@BeforeEach
public void setUp() {
MockitoAnnotations.initMocks(this);
user = new User();
changeusername = new ChangeUsername();
try {
when(c.prepareStatement(any(String.class))).thenReturn(stmt);
when(ds.getConnection()).thenReturn(c);
doNothing().when(stmt).setString(any(int.class), any(String.class));
when(stmt.execute()).thenReturn(Boolean.TRUE);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void setUserDetails() {
user.setAddress("A");
user.setEmail("B");
user.setFirstname("C");
user.setLastname("D");
user.setPassword("E");
user.setUsername("F");
}
@Test
public void testSetUsername() {
changeusername.setUsername("F");
assertEquals(changeusername.getUsername(), "F");
}
@Test
public void testSetPassword() {
changeusername.setUsername("E");
assertEquals(changeusername.getUsername(), "E");
}
@Test
public void testSetNewUsername() {
changeusername.setNewusername("X");
assertEquals(changeusername.getNewusername(), "X");
}
@Test
public void testChangeUsername() {
int update = jdbcTemplate.update(any(String.class), any(Object.class));
when(userdaoimpl.register(user)).thenReturn(update);
userdaoimpl.register(user);
when(userdaoimpl.changeUsername(changeusername)).thenReturn(user);
userdaoimpl.changeUsername(changeusername);
assertEquals("X", user.getUsername());
}
}


Подробнее здесь: https://stackoverflow.com/questions/616 ... ng-mockito
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»