使用 sinon chai 和 mocha 在 nodejs 中测试服务
testing services in nodejs with sinon chai & mocha
我正在尝试测试我的 bycrptSevice...
这是我的服务:
module.exports = (bcrypt) => {
const hashKey = Number(process.env.BCRYPT_HASH_KEY) || 10;
function checkPassword(reqPassword, userPassword) {
console.log("bycrptService: checkPassword call()");
return bcrypt.compareSync(reqPassword, userPassword);
}
function createHashPassword(password) {
console.log("bycrptService: createHashPassword call()");
return bcrypt.hashSync(password, hashKey);
}
return {
checkPassword,
createHashPassword
};
}
这是测试文件:
const { assert, should, expect, sinon } = require('../baseTest');
const bcryptService = require('../../services/bcryptService');
const bcryptjs = require('bcryptjs');
describe('bcryptService Tests', function() {
const bcrypt = bcryptService(bcryptjs);
let Password = '1234';
let crptPassword = bcrypt.createHashPassword(Password);
it('test the createHashPassword() create new hash password to the input password',function(){
expect(crptPassword).to.not.be.equal(Password);
})
it('test the checkPassword() check if return true when its compere and false when its not', function() {
bcrypt.checkPassword(Password,crptPassword).should.be.true;
bcrypt.checkPassword('987',crptPassword).should.be.false;
})
it('test onInit bycrptSevice shoud have hashKey',function(){
//how to check it???
})
});
我的第一个问题是:如何检查 hashKey 是否存在?
其次:我应该测试一下吗?我的意思是 - 我有责任检查它,或者我可能不关心私人领域
谢谢
为了测试 hashKey,您必须将其导出到您的 bycrptSevice
中,然后您可以对其进行任何测试。
关于你的第二个问题,视情况而定,但对于你的情况,hashkey
是一个环境变量,你应该在运行测试之前设置它,所以没有必要测试它.
我正在尝试测试我的 bycrptSevice... 这是我的服务:
module.exports = (bcrypt) => {
const hashKey = Number(process.env.BCRYPT_HASH_KEY) || 10;
function checkPassword(reqPassword, userPassword) {
console.log("bycrptService: checkPassword call()");
return bcrypt.compareSync(reqPassword, userPassword);
}
function createHashPassword(password) {
console.log("bycrptService: createHashPassword call()");
return bcrypt.hashSync(password, hashKey);
}
return {
checkPassword,
createHashPassword
};
}
这是测试文件:
const { assert, should, expect, sinon } = require('../baseTest');
const bcryptService = require('../../services/bcryptService');
const bcryptjs = require('bcryptjs');
describe('bcryptService Tests', function() {
const bcrypt = bcryptService(bcryptjs);
let Password = '1234';
let crptPassword = bcrypt.createHashPassword(Password);
it('test the createHashPassword() create new hash password to the input password',function(){
expect(crptPassword).to.not.be.equal(Password);
})
it('test the checkPassword() check if return true when its compere and false when its not', function() {
bcrypt.checkPassword(Password,crptPassword).should.be.true;
bcrypt.checkPassword('987',crptPassword).should.be.false;
})
it('test onInit bycrptSevice shoud have hashKey',function(){
//how to check it???
})
});
我的第一个问题是:如何检查 hashKey 是否存在?
其次:我应该测试一下吗?我的意思是 - 我有责任检查它,或者我可能不关心私人领域
谢谢
为了测试 hashKey,您必须将其导出到您的 bycrptSevice
中,然后您可以对其进行任何测试。
关于你的第二个问题,视情况而定,但对于你的情况,hashkey
是一个环境变量,你应该在运行测试之前设置它,所以没有必要测试它.