我正在使用书架,并尝试为使用Mock-Knex设置端点的函数模拟两种不同的情况。
在两种情况下,传递给函数的数据都相同;唯一的不同是,在第二种情况下,返回的对象中的一个具有不同的属性值,该属性告诉我们已经注册了多少个端点,这将触发一个错误,告诉我们已达到限制。
我创建了模拟返回函数数组,并将它们传递给测试。不幸的是,它们都触发极限误差。感觉我不明白Mock-Knex加载数组的方式。
这是我的返回函数数组:
const successfulSetupTokenFetch = () => {
query.response([{
'endpoint_limit': 20,
'endpoints_registered': 1
}]);
};
const maxEndpointsSetupTokenFetch = () => {
query.response([{attributes:{
'endpoint_limit': 20,
'endpoints_registered': 21
}
}]);
};
const successfulNewSetupQueries = [
successfulSetupTokenFetch,
...
];
const endpointLimitSetupQueries = [
maxEndpointsSetupTokenFetch,
...
];
这是我的测试:
describe('Endpoint setup function', function () {
mockDb.mock(db);
it('should create and return a new access token when given proper inputs', async function () {
tracker.install();
tracker.on('query', function sendResult (query, step) {
successfulNewSetupQueries[step - 1]();
});
const setupReturn = await setupEndpoint(goodSetupObject);
assert.equal(typeof setupReturn.token, 'string');
tracker.uninstall()
});
it('should return an endpoint limit error when the limit is reached', async function () {
tracker.install();
tracker.on('query', function sendResult (query, step) {
endpointLimitSetupQueries[step - 1]();
});
const endpointReturn = await setupEndpoint(goodSetupObject);
assert.equal(endpointReturn.error, 'Your organization has reached its endpoint limit. P');
tracker.uninstall();
});
mockDb.unmock(db);
});
请帮助我了解我在做错什么。