Chai 检查 return 值的结构和值
Chai check structure and values of return value
我有几个函数想用 chai 进行单元测试,它们是在函数实现之前编写的,因此它们也可以作为设计指南。
因此,我想确保这些函数的 return 值始终遵循一个确切的模式,例如这个:
{
id: #some unkown UID,
seller: 'user1',
seller_offer: [
{
inventory: #some inventory uuid,
item: 'red_card',
amount: '11',
}
],
recipient: 'user2',
recipient_offer: [
{
inventory: #some inventory UUID,
item: 'coin',
amount: '1234',
}
]
}
return 值不应该有任何额外的键并包含所有必需的键。
如果事先知道所有 return 值,那么使用深度相等很容易。现在的问题是其中一些值是 UUIDS,在 运行 函数之前显然不知道。像这样的功能还有很多
我希望能够简单地将 inventory 和 id 值设置为 null,以便 chai 确保密钥存在,但实际上并不比较它的值(或者甚至可能是检查值是否实际上是 UUIDS 的通配符对象) .
有什么办法可以做到这一点吗?基本确保JSON的结构是正确的,并模拟检查一些值。
您可以使用Chai JSON Pattern plugin to match the structure of the JSON. The API documentation is here
例如
const chai = require('chai');
const chaiJsonPattern = require('chai-json-pattern').default;
const faker = require('faker');
chai.use(chaiJsonPattern);
const { expect } = chai;
describe('67484029', () => {
it('should pass', () => {
const obj = {
id: faker.random.uuid(),
seller: 'user1',
seller_offer: [
{
inventory: faker.random.uuid(),
item: 'red_card',
amount: '11',
},
],
recipient: 'user2',
recipient_offer: [
{
inventory: faker.random.uuid(),
item: 'coin',
amount: '1234',
},
],
};
expect(obj).to.matchPattern(`
{
"id": String,
"seller": "user1",
"seller_offer": [
{
"inventory": String,
"item": "red_card",
"amount": "11"
}
],
"recipient": "user2",
"recipient_offer": [
{
"inventory": String,
"item": "coin",
"amount": "1234"
}
]
}
`);
});
});
我有几个函数想用 chai 进行单元测试,它们是在函数实现之前编写的,因此它们也可以作为设计指南。
因此,我想确保这些函数的 return 值始终遵循一个确切的模式,例如这个:
{
id: #some unkown UID,
seller: 'user1',
seller_offer: [
{
inventory: #some inventory uuid,
item: 'red_card',
amount: '11',
}
],
recipient: 'user2',
recipient_offer: [
{
inventory: #some inventory UUID,
item: 'coin',
amount: '1234',
}
]
}
return 值不应该有任何额外的键并包含所有必需的键。
如果事先知道所有 return 值,那么使用深度相等很容易。现在的问题是其中一些值是 UUIDS,在 运行 函数之前显然不知道。像这样的功能还有很多
我希望能够简单地将 inventory 和 id 值设置为 null,以便 chai 确保密钥存在,但实际上并不比较它的值(或者甚至可能是检查值是否实际上是 UUIDS 的通配符对象) .
有什么办法可以做到这一点吗?基本确保JSON的结构是正确的,并模拟检查一些值。
您可以使用Chai JSON Pattern plugin to match the structure of the JSON. The API documentation is here
例如
const chai = require('chai');
const chaiJsonPattern = require('chai-json-pattern').default;
const faker = require('faker');
chai.use(chaiJsonPattern);
const { expect } = chai;
describe('67484029', () => {
it('should pass', () => {
const obj = {
id: faker.random.uuid(),
seller: 'user1',
seller_offer: [
{
inventory: faker.random.uuid(),
item: 'red_card',
amount: '11',
},
],
recipient: 'user2',
recipient_offer: [
{
inventory: faker.random.uuid(),
item: 'coin',
amount: '1234',
},
],
};
expect(obj).to.matchPattern(`
{
"id": String,
"seller": "user1",
"seller_offer": [
{
"inventory": String,
"item": "red_card",
"amount": "11"
}
],
"recipient": "user2",
"recipient_offer": [
{
"inventory": String,
"item": "coin",
"amount": "1234"
}
]
}
`);
});
});