Добрый день товарищи кодеры!
Я провел последний час, пытаясь удалить один документ из моей тестовой коллекции mongo. Я хотел бы использовать методы удаления / удаления All MongoRepository. Однако он не удаляет документ. Он сохраняется независимо от того, сколько раз я запускаю метод тестового класса. Об ошибках не сообщается, и у пользователя есть разрешения на чтение и запись в базе данных. Я могу запустить команду mongo, чтобы удалить вновь созданный тестовый документ.
Я прочитал об использовании шаблона mongo и создал его для выполнения удаления. Я рад сделать это, но я бы предпочел, чтобы это было как можно проще.
import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.MongoId;
@Data
@Document(collection = "testCollection")
public class TestClass {
@MongoId
private String id;
private String name;
public TestClass(String name) {
this.name = name;
}
}
Проверить интерфейс репозитория класса Mongo
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;
public interface TestClassRepository extends MongoRepository<TestClass, String> {
public List<TestClass> findAllByName(String name);
public void deleteAllByIdIn(List<TestClass> list);
}
Метод тестирования
import org.junit.Assert;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@TestPropertySource(value = {"classpath:application.properties"})
@AutoConfigureMockMvc
public class testClassTest {
@Autowired
private TestClassRepository testClassRepository;
@Test
public void crudTest() {
TestClass testObj = new TestClass("Test");
testClassRepository.save(testObj);
List<TestClass> testClassList = testClassRepository.findAllByName("Test");
Assert.assertEquals(1, testClassList.size());
TestClass test = testClassList.get(0);
testClassRepository.deleteAllByIdIn(testClassList);
// Fails this assertion: Found 1, expected 0.
Assert.assertEquals(0, testClassRepository.findAllByName("Test").size());
}
}
Как кто-нибудь еще сталкивался с подобной проблемой? Если да, то как вы решили это?
Спасибо!
Дополнения к исходному сообщению:
- Вот запрос монго, сгенерированный MongoRepository. Похоже, что на самом деле он не добавляет команду удаления монго в запрос. Запрос: { name : Test}, поля: {}, сортировка: {}