【发布时间】:2019-02-14 07:29:26
【问题描述】:
我正在尝试对 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,所以这也可以考虑吗?
_____________________________________编辑_____________________________________
我把它改了一下,看起来像:
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
【问题讨论】:
标签: unit-testing mocha.js sinon chai loopback