繁体   English   中英

如何在 Jest NodeJS 中对 JSON 结果进行单元测试?

[英]How to unit test JSON result in Jest NodeJS?

我正在尝试进行单元测试的函数给出为

注意mypayload= payload.Items我会在问题的最后给出一个 JSON 参考

function setIdtoDeviceIdIfEmptyAndSetNullIfFieldEmpty(mypayload) {
      let _res = mypayload.map(ele => {
        if (ele.id == null) {
          ele.id = ele.deviceId
        }
        if (ele.id == null && ele.deviceId == null) {
          ele.id = '***Both id and device id is null***'
        }
        if (ele.ssid == null) {
          ele.ssid = '***ssid is null***'
        }
        if (ele.deviceName == null) {
          ele.deviceName = '**deviceName is null**'
        }
        return ele;
      })
      return _res
    }

我正在尝试测试最基本的部分,即第一个 if 循环ele.id==null

我试过了 :

describe('Test setIdtoDeviceIdIfEmptyAndSetNullIfFieldEmpty', () => {
        test('testing null', () => {
            index.setIdtoDeviceIdIfEmptyAndSetNullIfFieldEmpty(mypayload)
            mypayload.map(ele => {
                if (ele.id == null) {
                    expect(ele.id).toEqual(ele.deviceId)
                }
            })
        })
    })

但是,如果我输入expect(ele.id).toEqual("random") ,我无法让这个测试用例失败,当我期望它失败时它仍然通过,显然我做错了什么

参考

const payload = {"Items":[
    {
    "id" :"mycompany-00b12396",
    "ssid": "home",
    "deviceName": "mydevice",
    "time": "0.753235299 Hours"
    },
    {
        "ssid": "office",
        "deviceName": "thisdevice",
        "time": "12.52115515 Hours",
        "deviceId":"mycompany-0031f13"
    }
]}

您应该像这样测试函数的结果:

describe('Test setIdtoDeviceIdIfEmptyAndSetNullIfFieldEmpty', () => {
        test('testing null', () => {
            const result = index.setIdtoDeviceIdIfEmptyAndSetNullIfFieldEmpty(mypayload)
            result.map(ele => {
                if (!ele.id) {
                    expect(ele.id).toEqual(ele.deviceId)
                }
            })
        })
    })

我一直在尝试,这对我有用,希望它可以帮助将来的某个人

describe('Test setIdtoDeviceIdIfEmptyAndSetNullIfFieldEmpty', () => {
    test('testing null', () => {
        const result = index.setIdtoDeviceIdIfEmptyAndSetNullIfFieldEmpty(mypayload)
        let check = result.find(el => el.deviceId === "mycompany-00a412f");
        expect(check.id).toEqual(check.deviceId)
    })
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM