【发布时间】:2019-03-09 08:59:47
【问题描述】:
我对 spring boot 和 kotlin 还是很陌生。我已经开始使用来自网络的一个基本应用程序并编写单元测试,但我收到以下错误:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: articleRepository.save(article) must not be null
让我给你看代码:实体类
@Entity
data class Article (
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long = 0,
@get: NotBlank
val title: String = "",
@get: NotBlank
val content: String = ""
)
控制器:
@PostMapping("/articles")
fun createNewArticle(@Valid @RequestBody article: Article) : Article {
return articleRepository.save(article)
}
存储库:
@Repository
interface ArticleRepository : JpaRepository<Article, Long>
测试文件:
RunWith(SpringRunner::class)
@SpringBootTest
class KotlinDemoApplicationTests {
lateinit var mvc: MockMvc
@InjectMocks
lateinit var controller: ArticleController
@Mock
lateinit var respository: ArticleRepository
@Before
fun setup() {
MockitoAnnotations.initMocks(this)
mvc = MockMvcBuilders.standaloneSetup(controller).setMessageConverters(MappingJackson2HttpMessageConverter()).build()
}
@Test
fun createBlog() {
var article = Article(1, "Test", "Test Content")
var jsonData = jacksonObjectMapper().writeValueAsString(article)
mvc.perform(MockMvcRequestBuilders.post("/api/articles/").contentType(MediaType.APPLICATION_JSON).content(jsonData))
.andExpect(MockMvcResultMatchers.status().isOk)
.andDo(MockMvcResultHandlers.print())
.andReturn()
}
}
当我运行这个测试文件时,出现上述错误。 请帮我解决这个问题。
【问题讨论】:
标签: spring-boot junit kotlin