2016-12-14 6 views
0

Я столкнулся с проблемой во время тестирования хранилищ данных для хранения данных. Я называю ресурс отдыха и проверяю, достает ли он мне правильный 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 аннотацию я заменить текущее хранилище боб, и он не будет подвергаться воздействию со стороны остальных данных, Есть ли у нас какой-либо способ предварительного заполнения данных в БД или притворной вызова метода репозитория?

+0

может вы показываете нам свой тест и фасоль? – dimitrisli

ответ

0

Я не думаю, что это возможно. Данные Spring регистрируют бобы репозитория с использованием FactoryBean - в случае ожидания весенних данных это EntityRepositoryFactoryBean. Поэтому вы не можете просто переопределить эти бобы с помощью макета.

Для интересного чтения о том, почему насмешливых репозиториях весной данных не полезно увидеть этот ответ https://stackoverflow.com/a/23442457/5371736

В том же потоке есть ссылка на проект введения макета поддержки хранилищ пружинных данных - https://stackoverflow.com/a/28643025/5371736

 Смежные вопросы

  • Нет связанных вопросов^_^