Я пытаюсь начать модульное тестирование своих пользовательских методов в Loopback.
Сам метод очищает все пользовательские данные, задающие параметр.
module.exports = function(User) {
User.clearData = async function(options) {
const cityId = options.accessToken.cityId;
const deleteUserData = () => {
return User.destroyAll({cityId: cityId}, options).catch(error => {
console.log('Error deleting user', error);
throw error;
});
};
await deleteUserData();
};
};
То, что я сделал раньше, выглядит примерно так:
const sinon = require('sinon');
const {expect} = require('chai');
const clearDataUser = require('../clear-data');
describe('User clear data', ()=>{
let spy,
User;
const options = {
accessToken: {
cityId: 1,
},
};
beforeEach(()=>{
spy = sinon.spy();
User = {
destroyAll: spy,
};
});
it('should call destroyAll', () => {
clearDataUser(User);
User.destroyAll({cityId: options.accessToken.cityId}, options);
expect(spy.callCount).to.eq(1);
});
});
Это будет проверять только то, что destroyAll
вызывается. Есть ли способ проверить условие catch
? Я также использую async/await
, так можно ли это учитывать?
_____________________________________ _____________________________________ EDIT
Я немного изменил его, чтобы он выглядел так:
it('should call destroyAll', async() => {
clearDataUser(User);
const deleteUserData = () => {
return User.destroyAll({cityId: options.accessToken.cityId}, options);
};
await deleteUserData();
expect(spy.callCount).to.eq(1);
});
Однако, если я попытаюсь добавить .catch(error => { expect(error).to.not.equal('undefined'); });
, я получу TypeError: Cannot read property 'catch' of undefined