У меня есть следующая функция, которая изменяет имя пользователя пользователя в базе данных 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
Как издеваться ⇐ JAVA
Программисты JAVA общаются здесь
1738188295
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());
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/61630952/how-to-mock-preparedstatement-using-mockito[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия