我对 Spring 和 Kotlin 比较陌生。我遇到了这个问题,似乎互联网上的任何地方都没有(对我来说)可以理解的解释。
这是控制器及其正在测试的方法:
import com.xxx.data_api.entities.User
import com.xxx.data_api.repositories.UserRepository
import org.springframework.web.bind.annotation.*
@RestController
class UserController(var userRepository: UserRepository) {
@PostMapping("/users")
fun create(@RequestBody user: User): User {
return userRepository.save(user)
}
}
Run Code Online (Sandbox Code Playgroud)
这是正在注入的存储库:
import com.xxx.data_api.entities.User
import org.springframework.data.repository.CrudRepository
interface UserRepository : CrudRepository<User, Long> {
fun findByEmail(email: String): User?
}
Run Code Online (Sandbox Code Playgroud)
这是我的测试课:
import com.google.gson.Gson
import com.xxx.data_api.entities.User
import com.xxx.data_api.repositories.UserRepository
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.mockito.Mockito
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.boot.test.mock.mockito.MockBean
import org.springframework.http.MediaType
import org.springframework.test.context.junit.jupiter.SpringExtension
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
@ExtendWith(SpringExtension::class)
@SpringBootTest
@AutoConfigureMockMvc
class …Run Code Online (Sandbox Code Playgroud)