我设法为不需要任何其他服务或API的基本控制器编写了一个测试。但是现在我正努力将其应用于与数据库交互的控制器。 我从SO或Google向我投掷的其他网站上提供的不同来源收集了示例。尽管我使用的是最新的2.0.4.RELEASE
,但大多数都非常老,并且基于spring-boot 1.3或1.5。一些有用的摘录(我将其详细的内容与您无关,为您保留)
@RunWith(SpringRunner.class)
@WebMvcTest(HtmlController.class)
public class HtmlControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testIndex() {
try {
mockMvc.perform(get("/"));//etc.
} catch (Exception e) {
fail();
}
}
}
我更复杂的控制器@Autorwires此接口:
public interface SetRepository extends MongoRepository<SetEntity, String>
Here我发现我可以将@DataMongoTest
添加到测试类中,并将fladoodle的依赖项添加到pom中,它应该可以工作:
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<scope>test</scope>
</dependency>
但是我立即得到InitializationError
,而没有任何关于出了什么问题的信息。我发现可能需要在spring.data.mongodb.port=0
上添加application.properties
,但这并没有改变。
我想念什么?有没有人有使用MongoRepository接口的示例测试?
答案 0 :(得分:0)
这里有一个例子。
@DataMongoTest
@ExtendWith(SpringExtension.class)
public class MongoDbIntegrationTest {
@Autowired
private MongoTemplate mongoTemplate
@Test
public void test() {
//Create your document object
DBObject objectToSave = new DBObject();
objectToSave.set /// set properties..
mongoTemplate.save(objectToSave, "collection");
// then assert result..
assertThat(mongoTemplate.findAll(DBObject.class, "collection")).extracting("key")
.containsOnly("value");
}
}