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

Jasmine JavaScript:如何校验接口返回数组中符合要求的元素是否存在

数组元素校验正确实现方案

问题根因

你当前的测试代码未生效的核心原因是:要校验的postText、userId、isPublic字段均嵌套在响应数组元素的data属性下,并非和顶层id字段平级,原有匹配结构和实际接口返回结构不一致,导致匹配失败。

正确实现代码

it('Get all posts' , function(done){
    Posts.getPosts('publicPosts' ,(err,resp) =>{
        expect(resp).toContain(jasmine.objectContaining({
            // 匹配顶层字段
            id: '612d50bafabce50627bdb538',
            // 嵌套匹配data下的字段
            data: jasmine.objectContaining({
                postText:'post text sample',
                userId: '60f469cf784379051298e96d',
                isPublic: true
            })
          }));
        done();
    });
});

可选扩展方案

如果你需要更灵活的校验逻辑,也可以先对返回数组做自定义过滤,再断言过滤结果不为空:

it('Get all posts' , function(done){
    Posts.getPosts('publicPosts' ,(err,resp) =>{
        // 自定义过滤条件查找目标元素
        const targetPost = resp.find(item => 
            item.id === '612d50bafabce50627bdb538' 
            && item.data?.postText === 'post text sample'
            && item.data?.userId === '60f469cf784379051298e96d'
            && item.data?.isPublic === true
        )
        // 断言目标元素存在
        expect(targetPost).toBeDefined();
        done();
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:51:03