I am using the JestJS library to unit test my nodeJS application. When testing for returning data types, some tests are failing saying that the received data type is something other then what is expected, however the returned data type is incorrect. For example, I have a date string that is being received as an object, but it is in fact a string.
Received has value: [Error: expect(received).toBe(expected) // Object.is equality·
Expected: "string"
Received: "object"]
82 | expect(typeof response.data.getPublicDisinfectionByProductStage2[0].details[0].nextSampleDateRange).toBe("string");
Response object being evaluated:
{
"systemId": 1289,
"frequency": "QT",
"details": [
{
"sampleId": 19842,
"nextSampleDateRange": "04/01/2022 - 06/30/2022"
}
]
}
Then with a similar object the test fails with an error:
expect(received).toMatch(expected)
Matcher error: received value must be a string
Received has type: object
Received has value: [Error: expect(received).toBe(expected) // Object.is equality·
Expected: "number"
Received: "object"]
107 | expect(typeof response.data.getPublicOtherDistributionMonitoringPbcu.nextSampleDateRange).toBe("string");
108 | } catch (e) {
> 109 | expect(e).toMatch("error");
| ^
110 | }
111 | });
Where the object being evaluated looks like this:
{
"data": {
"getPublicOtherDistributionMonitoringPbcu": {
"systemId": 1289,
"lastSampleDate": "2018-09-27 00:00:00",
"nextSampleDateRange": "06/01/2022 - 09/30/2022"
}
}
}
Can someone help me understand what's happening here?