使用java springboot mongodb进行部分更新的JUNIT测试

使用java springboot mongodb进行部分更新的JUNIT测试,java,mongodb,junit,mocking,Java,Mongodb,Junit,Mocking,您好,我是JUnit test和Mockito的新手,我的问题是如何在我的customArticleRepository中为这个自定义部分更新方法编写单元测试,它没有返回参数? 我有一个名为Article的POJO对象,我想对其进行部分更新。REST端点将获取一个DTO对象分类掩码,并将特定的更新值作为请求主体,调用服务层ArticleService,该层调用myCustomArticleRepository方法 这是我的文章对象 public class Article { private

您好,我是JUnit test和Mockito的新手,我的问题是如何在我的
customArticleRepository
中为这个自定义部分更新方法编写单元测试,它没有返回参数? 我有一个名为
Article
的POJO对象,我想对其进行部分更新。REST端点将获取一个DTO对象
分类掩码
,并将特定的更新值作为请求主体,调用服务层
ArticleService
,该层调用my
CustomArticleRepository
方法

这是我的文章对象

public class Article {

private String id;
@Field("_cls")
private String inheritance;
private String title;
private Date published;
private String content;
private String link;

private String summary;
private String description;
private Date updated;
private String primary;
private String[] secondary;
private String category;
private String[] categories;
private String person;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
private Date deleted_date;

private Boolean is_new;

private Boolean edited;
private Aws aws;
这是我的DTO对象

public class ClassificationMask {
private String id;
private String title;
private String content;
private String primary;
private String[] secondary;

private Float sentiment_positive;
private Float sentiment_negative;
private Float sentiment_neutral;
private Float sentiment_mixed;

private String category;
private String person;
private Boolean is_new;
private Datasource datasource;
这是我在存储库中的partialupdate方法

public void partialUpdateMask(String id, ClassificationMask articleUpdate) {
    Query query = new Query(where("id").is(id));
    Update update = new Update();

    if(articleUpdate.getPrimary() !=null) { update.set("primary", articleUpdate.getPrimary()); }
    if(articleUpdate.getSecondary() !=null){ update.set("secondary", articleUpdate.getSecondary());}
    if(articleUpdate.getCategory() !=null){ update.set("category", articleUpdate.getCategory());}
    if(articleUpdate.getPerson() !=null){ update.set("person",articleUpdate.getPerson());}
    if(articleUpdate.getIs_new() !=null){ update.set("is_new",articleUpdate.getIs_new()); }

    update.set("edited",true);
    mongoTemplate.updateFirst(query,update ,Article.class);
}

测试无效方法我们可以:

  • 方法修改被测试对象的状态:以便验证sut的状态是否与aspectative一致
  • 方法不修改SUT的状态,但是,例如,在DB上写入数据,以便您可以验证是否调用了DAO
  • 这是第二种情况,您可以有如下内容:

    Mockito.verify(mongoTemplate).updateFirst(query, update, Article.class);
    
    
    以这种方式,你在测试它

  • 该方法实际上调用updateFirst
  • 方法calss updateFirst使用正确的参数

  • 是否更新您的类?@Renato no这是springboot的一个类,在这里: