使用mock sinon在节点上测试mysql

时间:2017-09-27 19:19:34

标签: javascript mysql unit-testing mocking sinon

我有一个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);
});

不确定如何使用模拟来测试查询。不确定queryStringqueryParams

0 个答案:

没有答案