Zum Inhalt

spring-data-mongodb: was braucht man für die Junit Tests

ich gehe hierbei davon aus, dass man mit einer aktuellen Spring-Boot Version entwickelt (mein Stand: 2.1.7-GA), im Projekt mongodb verwendet, darauf evtl. spring-data-mongodb ansetzt und das man für die Tests eine Embedded Mongodb verwenden möchte.

  • man braucht folgende Abhängigkeit im Projekt (nach Maven Gusto):
<dependency>
     <groupId>de.flapdoodle.embed</groupId>
     <artifactId>de.flapdoodle.embed.mongo</artifactId>
     <version>????</version>
     <scope>test</scope>
 </dependency>
  • die Test-Resourcen benötigen eine application.properties oder .yml (jeden sein Gift), falls noch nicht vorhanden, die folgenden Eintrag enthält:
de.flapdoodle.embedde:flapdoodle.embed.mongo

Und schon kann man Tests wie folgenden schreiben:

@ExtendWith(SpringExtension.class)
@DataMongoTest
class ApplicationTests {

   @Test
   void testSelectingLast(@Autowired ReactiveMongoTemplate template){

      long millis = System.currentTimeMillis();
      template.save(TestClass.builder().createdAt(new Date(millis-100000)).build(), "test-collection").subscribe();
      template.save(TestClass.builder().createdAt(new Date(millis)).build(), "test-collection").subscribe(x->{
         Query query = new Query();
         query = query.with(Sort.by(DESC, "createdAt")).limit(1);
         template.find(query, TestClass.class,  "test-collection").subscribe(tc->{

            assertEquals(millis, tc.getCreatedAt().getTime());
         });
}
         assertEquals(Long.valueOf(1L), template.findAll(TestClass.class, "test-collection").count().block());
      });
   }


   @Data
   @Builder
   static class TestClass{
      @Id
      private String id;

      private Date createdAt;
   }

}
Published inJavamongodbspring-dataspringframework

Schreibe den ersten Kommentar

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.