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

时间:2020-02-29 12:03:19

标签: javascript node.js json unit-testing jestjs

我要进行单元测试的功能为

注意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"
    }
]}

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我一直在尝试,这对我有用,希望它对以后的人有所帮助

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)
    })
})