【发布时间】:2019-11-08 12:11:30
【问题描述】:
我有一个使用我不想实际调用的数据库的类。在四处挖掘之后,我发现 Sinon 似乎解决了内部方法的这个问题,但我无法让它与所需的模块一起工作。我知道测试现在做的不多,但我想确认我可以在继续之前做这件事。
当我执行以下操作时,数据库不会被删除。
我要测试的代码如下所示:
const db = require('../../models');
const Op = db.Sequelize;
class UserSearch{
async _resolveUserType(userType){
let permission;
if (typeof userType === 'number'){
permission = await db.permission.findOne({ where: { id : userType } });
}else{
permission = await db.permission.findOne({ where: { type : userType } });
}
return permission;
}
}
测试代码:
const db = require('../../models');
const { UserSearch } = require('./userSearch');
describe('UserSearch Test Suite', function(){
it('should return an object', async function(){
const fakeDb = {
permission: {
findOne: function () {
return new Promise(resolve => {
return resolve({id: 3, type: 'student'})
});
}
}
};
const userSearch = new UserSearch();
sinon.stub(db, 'permission').returns(fakeDb.permission);
const permission = await userSearch._resolveUserType(3);
expect(permission).to.be.an('object');
});
});
【问题讨论】:
标签: node.js unit-testing chai sinon