我在我的服務中有這個結果串列我寫了這個單元測驗
@SpringBootTest(
classes = [CmsApplication::class],
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
)
internal class IngredientsServiceImplTest {
@Autowired
lateinit var restTemplate: TestRestTemplate
@Test
fun getIngredients() {
val result = restTemplate.getForObject("/ingredients", GetIngredientsQuery.Data::class.java);
assertNotNull(result)
assertTrue(result.ingredients!!.isNotEmpty())
assertEquals(result.ingredients!!.size, 512)
val first: GetIngredientsQuery.Ingredient = result.ingredients!![0]
assertEquals(first.displayName,"Salz")
assertEquals(first.image,"/api/consumer/ingredient/salt/image")
assertEquals(first.popular,false)
assertEquals(first.staple,true)
}
}
這里的問題是串列的大小為 512 我認為我需要 assertEqual 串列中的所有專案,正如你所看到的,我對第一個元素這樣做有任何建議,或者這個測驗就足夠了?
這是方法
override suspend fun getIngredients(locale: String?, supportedApiVersion: Int?): GetIngredientsQuery.Data? {
return this.apollo.buildApolloClient().query(GetIngredientsQuery(this.initRequestConfig(locale, supportedApiVersion)))
.execute().data
}
uj5u.com熱心網友回復:
如果類定義了正確的toString()方法,您只需執行此操作即可
assertEquals(expected, actual),無需遍歷串列中的所有值。
這個想法是您創建的預期結果應該與您對休息的期望(實際)相同。
不需要所有這些assertNotNull(), assertTrue(),如果你這樣做assertEquals()并且有一個空串列或 null 它無論如何都會崩潰,所以你可以洗掉這些斷言。
Pd:為什么要測驗 512 項?測驗應該很快,所以不確定是否值得擁有 512 項以確保代碼正常作業。
例子
@Test
fun test() {
val actual = restTemplate.getForObject("/ingredients", GetIngredientsQuery.Data::class.java)
val expected = listOf<Ingredients>(....)
assertEquals(expected, actual)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/531981.html
標籤:弹簧靴单元测试科特林
上一篇:SpringJpaRepository@Query中的多個JOIN
下一篇:在springbootjava.util.ConcurrentModificationException中添加多個表單\r\n\tatjava.base/java.util.ArrayList.
