我在打字稿中使用 pact V3 来验证与 API 的合同。响应示例匹配器如下:
const userExample = {
email: string("[email protected]"),
id: number(123)
}
API 中的实际
response.data
看起来像:
{
"email": "[email protected]",
"id": 123
}
当我执行测试时:
expect(response.data).toStrictEqual(userExample)
我知道它是将
response.data
与 Matcher 对象进行比较,而不是实际的示例值:
contract:test: - Expected - 8
contract:test: + Received + 2
contract:test:
contract:test: Object {
contract:test: - "email": Object {
contract:test: - "pact:matcher:type": "type",
contract:test: - "value": "[email protected]",
contract:test: - },
contract:test: - "id": Object {
contract:test: - "pact:matcher:type": "number",
contract:test: - "value": 123,
contract:test: - },
contract:test: + "email": "[email protected]",
contract:test: + "id": 123,
contract:test: }
我可以通过以下方式解决这个问题:
expect(response.data.email).toStrictEqual(userExample.email.value)
expect(response.data.id).toStrictEqual(userExample.id.value)
但是我想弄清楚是否有一种方法可以比较整个响应而不必在单独的
.value
函数行中为expect
响应的每个潜在值指定userExample
?