Yas*_*svi 7 android android-testing android-room android-paging
从移后SqliteOpenHelper到room我的应用程序中,我试图写的测试DAO类。
我的 DAO 看起来像这样:
@Query("SELECT * FROM cards")
fun getAllCards(): List<CardData>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertCard(vararg cardData: CardData): List<Long>
@Query("SELECT * FROM cards ORDER BY isRead ASC, id DESC")
fun getItemList(): DataSource.Factory<Int, CardData>
@Query("SELECT * FROM cards where instr(title, :query) > 0 ORDER BY isRead ASC, id DESC")
fun getItemList(query: String): DataSource.Factory<Int, CardData>
@Query("UPDATE cards set isRead = 1 where title = :title")
fun markRead(title: String): Int
Run Code Online (Sandbox Code Playgroud)
在写测试getAllCards,insertCard并且markRead是微不足道的,我仍然不知道我怎么测试的API,其回报率DataSource.Factory,即getItemListAPI的。
在互联网上搜索后,我找不到与此相关的任何内容。
有人可以帮忙吗。
这就是我所做的:
val factory = dao.getItemList()
val list = (factory.create() as LimitOffsetDataSource).loadRange(0, 10)
Run Code Online (Sandbox Code Playgroud)
引用 CommonsWare
如果您在 Room 中使用分页并让 @Dao 方法返回 DataSource.Factory,则生成的代码使用名为 LimitOffsetDataSource 的内部类来执行 SQLite 操作并完成 PositionalDataSource 协定。
来源:https : //commonsware.com/AndroidArch/previews/paging-beyond-room#head206
| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |