Retool单元测试疑难:表格组件数据读取异常及属性访问报错求助
解决Retool单元测试中table1.data为null的问题
问题根源
你用固定6秒延时等待数据加载,但Retool组件的数据更新是异步过程,固定延时无法保证数据真正挂载到组件上——断言执行时table1.data还未完成赋值,所以报null;但日志输出时有延迟,此时数据已经加载完成,才会出现日志能看到数据但代码访问报错的矛盾。另外你的数据结构里associated_company_name是数组,直接和字符串对比的逻辑本身也不匹配。
修正方案
用Retool测试内置的waitFor方法替代固定延时,精准等待数据就绪,同时匹配正确的数据结构:
await my_search_button.setValue("Test Name"); // 等待table1.data不为null,且目标值存在于数组中 await waitFor(() => { return table1.data?.associated_company_name?.includes("Test Name"); }, { timeout: 10000 }); // 超时时间可根据实际加载速度调整 // 断言数组第一个元素与目标值一致 assertCondition(table1.data.associated_company_name[0] === "Test Name");
关键说明
waitFor会反复执行传入的回调函数,直到返回true或超时,比固定延时更可靠,能适配不同的网络和加载速度。- 用可选链
?.避免在数据未就绪时访问属性触发报错。 - 注意
associated_company_name是数组类型,需要通过索引取值或用includes判断值的存在性。
内容的提问来源于stack exchange,提问作者RBB
相关产品推荐
相关产品推荐

