如何在测试类中创建WebStoreNetwork记录解决查询无返回行问题?
解决方案
1. 提前创建关联的WebStoreNetwork测试记录
问题核心是测试环境中不存在与communityId匹配的WebStoreNetwork记录,导致查询返回空结果触发异常。在执行目标查询前,先插入一条符合条件的测试数据:
// 先创建依赖的WebStore记录(WebStoreNetwork关联WebStore对象) WebStore testWebStore = new WebStore(Name = '测试网店'); insert testWebStore; // 创建与communityId绑定的WebStoreNetwork记录 WebStoreNetwork testWsNetwork = new WebStoreNetwork( NetworkId = communityId, WebStoreId = testWebStore.Id ); insert testWsNetwork;
2. 优化查询的空值处理(可选)
如果业务逻辑允许查询无结果的场景,避免使用单行查询语法,改用集合接收结果后判断是否为空:
List<WebStoreNetwork> wsNetworkList = [ SELECT WebStoreId FROM WebStoreNetwork WHERE NetworkId = :communityId WITH SECURITY_ENFORCED ]; if (!wsNetworkList.isEmpty()) { Id targetWebStoreId = wsNetworkList[0].WebStoreId; // 后续业务逻辑处理 } else { // 无匹配记录时的分支处理 }
3. 验证权限配置
查询语句包含WITH SECURITY_ENFORCED,需确保测试运行的用户(如果用了RunAs模拟特定用户)拥有WebStoreNetwork对象的访问权限及对应字段的读取权限,必要时为测试用户分配权限集或调整配置文件。
内容的提问来源于stack exchange,提问作者user106835
相关产品推荐
相关产品推荐

