我有一个mysql表,我试图通过使用sinon.js mock测试用户是否得到保存。
我的user.js模型包含以下代码。
saveUser = (userinfo) => new Promise((resolve,reject)=>{
var salt = bcrypt.genSaltSync(10);
var hash = bcrypt.hashSync(userinfo.password, salt);
userinfo.password = hash;
userinfo.token = jwt.sign({email : userinfo.email},'secretkeyyo');
db.query('INSERT INTO user SET ?',userinfo,function(error,results,fields){
if(error){
reject('Could not save users to mysql');
}else{
resolve(results.insertId);
}
})
});
通常userinfo
有以下字段:Owner , firstname lastname email password token
在获得哈希值后会保存到用户表中
我有一个我试图运行的测试文件,但我不确定如何继续
var expect = require('chai').expect;
var faker = require('faker');
const request = require('supertest');
const should = require('should');
const sinon = require('sinon');
const helper = require('../../models/user');
it('should mock insert statement',(done)=>{
var mock;
mock = sinon.mock(require('mysql'))
mock.expects(saveUser).with(queryString, queryParams).yields(null, rows);
});
不确定如何使用模拟来测试查询。不确定queryString
和queryParams