当前位置: 首页 > 知识库问答 >
问题:

模拟Spring数据Rest存储库

洪昱
2023-03-14
given(commentRepository.findOne(1L)).willReturn(comment);

现在,当调用“/comments/1”时,我得到了404个错误,所以数据rest没有公开我的存储库。主要问题是“如何模拟存储库方法从数据库中获取数据?”
我的测试类:

    @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注释我替换了当前的存储库bean并且它不会被数据rest公开,我们有没有办法将数据预填充到db或存储库方法的模拟调用?

共有1个答案

麹权
2023-03-14

我认为这是不可能的。Spring data使用FactoryBean注册存储库bean-在spring-data-rest大小写中,这是EntityRepositoryFactoryBean。所以不能仅仅用mock覆盖这些bean。

要了解为什么模拟spring数据存储库不有用,请参阅以下答案https://stackoverflow.com/A/23442457/5371736

在同一线程中,有一个项目引用了引入spring-data repositories的模拟支持--https://stackoverflow.com/a/28643025/5371736

 类似资料:
  • 正如标题所说,当我将spring数据rest存储库添加到现有的spring数据rest webmvc项目中时,我开始在项目运行中出错。 我试图使用@ConvertBy(MyConverter.class)在实体中遵循此链接进行嵌入ID转换。然而,仅仅添加jar就会导致以下错误和大量o. s. c. i. s. PathMatchingResourcePatterResolver日志。

  • 我在Spring Boot中有一个带有Spring Data Rest的应用程序,我正在尝试使用Swagger maven插件生成带有Swagger的文档。生成控制器文档时没有问题,但存储库没有问题。 我已经在pom中配置了如下形式的swagger maven插件。xml: 我的随身携带物品: 是否可以用swagger-maven-plugin生成存储库留档?

  • 当我扩展CrudRepository接口时,我的子接口中有方法。我可以写 签入我的服务层。

  • 它是否将其存储在缓存中?我有一个应用程序,但应用程序中没有任何地方。属性是提到的db详细信息。我可以通过邮递员存储数据和查询它。

  • 数据存储模型 如图所示是Talos数据存储的组织形式 逻辑结构:如图左上角,数据以Topic形式存在,逻辑上分为多个partition,图中topic有8个partition,partition id 为 [0, 7] 物理结构:每个Partition在硬盘上是以多个文件组织而成,如图 Partition 7 由 3 个文件组成:file 1,file 2,file 3; Message组织形式:

  • 如果我打电话: 它给出了方法的结果 但是现在我需要从调用这个方法(JPararePository扩展了这个接口) 为了调用EmployeeRepository作为restendpoint,我给EmployeeRepository编写了一些函数。 但我得到了一个错误: