Я столкнулся с проблемой во время тестирования хранилищ данных для хранения данных. Я называю ресурс отдыха и проверяю, достает ли он мне правильный json. Но для данных предпопуляции я не хочу использовать память db, поэтому я высмеивал вызов метода репозитория.
@MockBean private CommentRepository commentRepository;
и сделал этоMock Spring Data Rest Repository
given(commentRepository.findOne(1L)).willReturn(comment);
И теперь, во время вызова «/ комментарии/1» Я получаю сообщение об ошибке 404, так что данные остальное не подвергать мое хранилище. Главный вопрос: «Как мы можем издеваться над методом репозитория для получения данных из базы данных?»
Мой тестовый класс:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class CommentTest
{
@Autowired
private TestRestTemplate restTemplate;
@MockBean
private CommentRepository commentRepository;
@Before
public void setup()
{
Comment comment = new Comment();
comment.setText("description");
comment.setCommentId(1L);
given(commentRepository.findOne(1L)).willReturn(comment);
}
@Test
public void shouldCheckCommentGetResource()
{
ParameterizedTypeReference<Resource<Comment>> responseType = new ParameterizedTypeReference<Resource<Comment>>() {};
ResponseEntity<Resource<Comment>> responseEntity =
restTemplate.exchange("/comments/1", HttpMethod.GET, null, responseType, Collections
.emptyMap());
Comment actualResult = responseEntity.getBody().getContent();
assertEquals("description", actualResult.getText());
// more assertions
}
}
Как я понимаю, с помощью MockBean аннотацию я заменить текущее хранилище боб, и он не будет подвергаться воздействию со стороны остальных данных, Есть ли у нас какой-либо способ предварительного заполнения данных в БД или притворной вызова метода репозитория?
может вы показываете нам свой тест и фасоль? – dimitrisli