- Kotlin Blueprints
- Ashish Belagali Hardik Trivedi Akshay Chordiya
- 244字
- 2021-07-02 21:50:19
Test cases
All the tests are put in the test module with the same package name of the code. Mainly the test cases are written for the Controller, but you can even write for Repository for which you'll need to mock the database using Mockito or some other mocking library.
The MockMvc class is the entry point for performing server-side tests. We can perform HTTP requests such as GET, POST, and others on the URLs to test the REST endpoints.
MessageControllerTests: Test cases for the MessageController are written in human readable names using ` while writing function names.
Consider the following example:
@RunWith(SpringRunner::class)
@SpringBootTest
class MessageControllerTests {
@Autowired lateinit var context: WebApplicationContext
@Autowired lateinit var messageRepository: MessageRepository
@Autowired lateinit var mapper: ObjectMapper
/**
* Entry point to server side tests
*/
lateinit var mockMvc: MockMvc
@Before
fun setup() {
messageRepository.deleteAll()
mockMvc = webAppContextSetup(this.context).build()
}
@Test
fun `Create new message`() {
val message = Message("""We have some dummy message over here
to perform some testing and I have started to write test
cases for my code""".trimMargin()
, Point(0.0, 0.0))
mockMvc.perform(post("/message")
.content(mapper.writeValueAsString(message))
.contentType(APPLICATION_JSON_UTF8))
.andExpect(status().isCreated)
}
@Test
fun `Get all messages`() {
messageRepository.insert(Message("I love Kotlin"))
messageRepository.insert(Message("I love this book",
Point(0.0, 0.0)))
mockMvc.perform(get("/message")
.accept(APPLICATION_JSON_UTF8)).andExpect(status().isOk)
}
@Test
fun `Find messages in the specified region`() {
messageRepository.insert(Message("I love Kotlin", Point(0.0,
0.0)))
messageRepository.insert(Message("I love this book",
Point(1.0, 1.0)))
mockMvc.perform(get("/message/bbox/{xMin},{yMin},{xMax},
{yMax}", -1, -1, 2, 2)
.accept(APPLICATION_JSON_UTF8))
.andExpect(status().isOk)
}
@Test
fun `Subscribe to the message`() {
mockMvc.perform(get("/message/subscribe"))
.andExpect(status().isOk)
}
}
推薦閱讀
- Kubernetes實(shí)戰(zhàn)
- Learn Type:Driven Development
- INSTANT FreeMarker Starter
- 跟“龍哥”學(xué)C語(yǔ)言編程
- MySQL 8 DBA基礎(chǔ)教程
- Java設(shè)計(jì)模式及實(shí)踐
- 匯編語(yǔ)言程序設(shè)計(jì)(第3版)
- Java高并發(fā)核心編程(卷1):NIO、Netty、Redis、ZooKeeper
- Spring 5 Design Patterns
- Scrapy網(wǎng)絡(luò)爬蟲(chóng)實(shí)戰(zhàn)
- Mastering SciPy
- Java程序設(shè)計(jì)實(shí)用教程(第2版)
- Java自然語(yǔ)言處理(原書(shū)第2版)
- 零基礎(chǔ)學(xué)Java(第5版)
- Android開(kāi)發(fā)進(jìn)階實(shí)戰(zhàn):拓展與提升