You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让SeaORM MockDatabase返回无结果以测试先查后插逻辑

如何配置MockDatabase返回无结果以测试查询无数据时的插入逻辑

我需要测试一段逻辑:先通过ID查询实体,若查询到结果则不执行插入,若查询结果为None则执行插入。核心代码如下:

if TheEntity::find_by_id(id).one(&db).await?.is_some() {
    // 不执行插入,做其他操作...
}else{
    // 插入新实体
}

请问如何配置MockDatabase使其返回无结果?当前我的配置示例如下(现在返回的是有结果的情况):

MockDatabase::new(DatabaseBackend::Sqlite)
   .append_query_results([
       // 这里不想返回这个Model,想要返回None
       vec![my_entity::Model{id: "TheId".to_string()}]
   ]);

要让MockDatabase返回无结果,直接给append_query_results传入空向量即可,不需要传入包含Model实例的向量。修改后的代码如下:

MockDatabase::new(DatabaseBackend::Sqlite)
   .append_query_results([vec![]]);

这样配置后,one(&db)方法会返回Ok(None),对应你代码中的is_some()为false,就会走到插入新实体的分支,完美匹配你要测试的查询无数据的场景。

内容的提问来源于stack exchange,提问作者rsan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:09:26