Mam klasę testową, która ładuje kontekst aplikacji testowej sprężyny, teraz chcę utworzyć regułę junit, która ustawi niektóre dane testowe w mongo db. W tym celu stworzyłem klasę reguł.Reguła JUnit używająca fasoli sprężynowej
public class MongoRule<T> extends ExternalResource {
private MongoOperations mongoOperations;
private final String collectionName;
private final String file;
public MongoRule(MongoOperations mongoOperations, String file, String collectionName) {
this.mongoOperations = mongoOperations;
this.file = file;
this.collectionName = collectionName;
}
@Override
protected void before() throws Throwable {
String entitiesStr = FileUtils.getFileAsString(file);
List<T> entities = new ObjectMapper().readValue(entitiesStr, new TypeReference<List<T>>() {
});
entities.forEach((t) -> {
mongoOperations.save(t, collectionName);
});
}
}
Teraz używam tej reguły w mojej klasie testowej i przekazywaniu fasoli mongoOperations.
Problem polega na tym, że Reguła jest wykonywana przed załadowaniem kontekstu aplikacji, więc odwołanie do pliku mongoOperations jest przekazywane jako puste. Czy istnieje sposób, aby reguły były uruchamiane po załadowaniu kontekstu?